三種保證URL位址可信的加密方式

2021-09-12 08:15:28 字數 1310 閱讀 8205

近日接到乙個需求,要求一台資源伺服器不僅在可以暴露在公網環境下的同時,還要保證只接受並處理可信的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伺服器還不可偽造剩餘可信伺服器返回的重定向位址。

由於resource server需要允許所有的公網使用者訪問,所以不能對ip進行限制,並且一般情況下resouce server也不會與frontend server直接通訊,因此只能通過url的驗證方式。frontend server在生成每個url的過程中中應包括resource server為每乙個frontend server分配的賬戶fsid、金鑰fskey以及記錄當前url生成時間的時間戳fstime。fsid必須明文傳輸,fskey做為加密運算的乙個常量不可以明文傳輸。

可以想到的有如下三種:

1.使用自定的加密函式生成加密簽名字串。fstime))

resource server收到該請求後

2.使用對稱加密演算法保證http通訊可信。

resource server收到該請求後

3.同時使用非對稱,對稱加密演算法保證http通訊可信。

resource server收到該請求後

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

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

三種保證URL位址可信的加密方式

近日接到乙個需求,要求一台資源伺服器不僅在可以暴露在公網環境下的同時,還要保證只接受並處理可信的http訪問請求。需求場景如圖 為了訪問資源檔案,使用者需要首先訪問某一台frontend server進行使用者身份認證 所有的使用者資訊均由frontend server儲存,frontend ser...

三種保證URL位址可信的加密方式

近日接到乙個需求,要求一台資源伺服器不僅在可以暴露在公網環境下的同時,還要保證只接受並處理可信的http訪問請求。需求場景如圖 為了訪問資源檔案,使用者需要首先訪問某一台frontend server進行使用者身份認證 所有的使用者資訊均由frontend server儲存,frontend ser...

執行緒的三種建立方

一,繼承thread 重寫run class programmer extends thread public static void main string args 二,繼承runnable 實現run class programmer implements runnable public st...