日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

三种保证URL地址可信的加密方式

發布時間:2023/12/29 编程问答 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 三种保证URL地址可信的加密方式 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

近日接到一個需求,要求一臺資源服務器不僅在可以暴露在公網環境下的同時,還要保證只接受并處理可信的http訪問請求。

?

需求場景如圖:

為了訪問資源文件,用戶需要首先訪問某一臺Frontend Server進行用戶身份認證———所有的用戶信息均由Frontend Server保存,Frontend Server認證通過后返回真實的重定向地址,用戶再根據重定向地址訪問Resource Server獲取資源文件。

具體的使用場景正如上面所述,下面是我的思考過程...

?

為了保證資源服務器收到的是一個可信的重定向地址,在安全性上有三點考慮:

?

  • 重定向地址必須是可信的,即不可以被偽造,必須是由某一臺Frontend Server返回的重定向地址。
  • 為了防止盜鏈或資源被采集,每個Frontend Server返回的重定向地址應具有時效性。這個可以通過在鏈接地址上增加時間戳實現,但前提是該時間戳不可以被偽造。
  • 最后,在必要的情況下,還可以不去響應某一臺Frontend Server返回的重定向地址,即認為某一臺Frontend Server的重定向地址不可信、該Frontend Server不可信。這要求Resource Server能夠及時標示一臺Frontend Server為不可信服務器,并且該Frontend? Sever服務器還不可偽造剩余可信服務器返回的重定向地址。
  • ?

    以上三點也可以總結為:防止公網用戶偽造URL地址,防止不可信Frontend Server偽造地址,防止過期URL地址訪問。

    由于Resource Server需要允許所有的公網用戶訪問,所以不能對Ip進行限制,并且一般情況下Resouce Server也不會與Frontend Server直接通信,因此只能通過URL的驗證方式。Frontend Server在生成每個URL的過程中中應包括Resource Server為每一個Frontend Server分配的賬戶fsId、密鑰fsKey以及記錄當前URL生成時間的時間戳fstime。fsid必須明文傳輸,fsKey做為加密運算的一個常量不可以明文傳輸。

    可以想到的有如下三種:

    1.使用自定的加密函數生成加密簽名字符串。
    加密函數將所有需要明文傳輸的參數以及當前Frontend Server使用的密鑰fsKey做為參數并通過MD5轉換后生成加密簽名字符串,md5(encode(params,fsid, fskey, fstime))。
    重定向地址鏈接:

    http://res.com/fsid=***&fstime=***&params=***&signmsg=md5(encode(params,fsid,fskey, fstime))

    Resource Server收到該請求后

    • 根據fstime判斷該請求是否過期,過期請求直接返回。
    • 根據fsid判斷該Frontend Server是否可信,如可信再根據fsid獲得服務器端保存的fskey。
    • 使用相同的參數加密簽名過程,Resource Server根據params,fsid, fskey, fstime生成簽名字符串。
    • 比較重定向地址傳來的簽名字符串signmsg與本地生成的簽名字符串是否相同,相同則認為是可信請求,否則為非法請求。

    2.使用對稱加密算法保證HTTP通信可信。
    Resource Server為每一臺Frontend Server分配不同的Des密鑰(fskey),Frontend Server使用對稱加密算法對拼接后的傳遞參數進行加密des(params|fstime)
    重定向地址鏈接:
    http://res.com/fsid=***&desmsg= des(params|fstime)
    Resource Server收到該請求后

    • 首先根據fsid判斷該Frontend Server是否可信,如可信再根據fsid獲得每個Frontend Server使用的Des密鑰fskey。
    • 使用密鑰對desmsg信息解密,解密失敗直接返回。
    • 根據解密后的fstime判斷是否過期,過期直接返回。

    3.同時使用非對稱,對稱加密算法保證HTTP通信可信。
    Frontend Server隨機生成key做為對稱加密算法的公鑰des(params|fskey|fstime),并使用Resource Server提供的公鑰對key進行非對稱加密rsa(key)
    重定向地址鏈接:
    http://res.com/fsid=***&rsamsg=rsa(key)&desmsg= des(params|fskey|fstime)
    Resource Server收到該請求后

    • 首先根據fsid判斷該Frontend Server是否可信,如可信再根據服務器端保存的非對稱加密私鑰解密rsa(key)。
    • 根據key解密des(params|fskey|fstime)。
    • 通過fsid獲得服務器端保存的fskey,對比解密后的fskey,如果不相同則認為是Frontend Server偽造的非法請求。
    • 根據fstime判斷是否過期,過期直接返回。


    以上三種方法第一種會暴露所有的明文傳遞參數,第二種貌似最方便但卻有被攻破的危險,第三種有可能又會產生效率的問題。

    由于沒有進行過相關方面的開發,以上也是對平時了解有限的一些資料的總結,難免考慮不周。各位有更好的方法和建議嗎?

    ?

    ?

    總結

    以上是生活随笔為你收集整理的三种保证URL地址可信的加密方式的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。