首頁>Club>
1
回覆列表
  • 1 # 9點10分

    客戶端拼接字串規則如下:

    介面+引數+時間戳+secretID(如果不是做對外開放性的API,是內部產品呼叫的話那麼secretID可以是寫死的一個ID值)

    將以上字串用對稱加密,作為一個sign引數,請求服務端。

    比如介面,login,引數有 name、password、加密後的sign

    服務端接收到請求後,用對稱解密sign,得到secretID,核對值是否正確,那麼說明請求方是可信任的。返回介面結果,並把sign記錄到redis。

    下次接收到同樣請求時發現redis已經有對應的sign值說明是介面重放,不予以正常相應。因為正常使用者呼叫介面時間戳應該是改變的不可能產生同樣的sign值。

    如果發現sign解釋出來的secretID是系統不存在的,那麼說明請求方在偽造請求。不予以正常相應。

  • 2 # 科技Pioneer

    感謝應邀回到本行業的問題。

    在回答這個問題之前我感覺我們因該先了解一個HTTPS。

    HTTPS:是以安全為目標的HTTP通道,簡單講是HTTP的安全版,即HTTP下加入SSL層,HTTPS的安全基礎是SSL,因此加密的詳細內容就需要SSL。

    HTTPS協議的主要作用可以分為兩種:一種是建立一個資訊保安通道,來保證資料傳輸的安全;另一種就是確認網站的真實性。

    工作流程為:

    第一步:客戶使用https的URL訪問Web伺服器,要求與Web伺服器建立SSL連線。

    第二步:Web伺服器收到客戶端請求後,會將網站的證書資訊(證書中包含公鑰)傳送一份給客戶端。

    第三步:客戶端的瀏覽器與Web伺服器開始協商SSL連線的安全等級,也就是資訊加密的等級。

    第四步:客戶端的瀏覽器根據雙方同意的安全等級,建立會話金鑰,然後利用網站的公鑰將會話金鑰加密,並傳送給網站。

    第五步:Web伺服器利用自己的私鑰解密出會話金鑰。

    第六步:Web伺服器利用會話金鑰加密與客戶端之間的通訊。

    從其工作流程中,我們看出每個連線都會驗證證書,交換金鑰。別人就算截獲你的資料包,重新發送一遍,因為socket不一樣,金鑰也不一樣,後臺解密後應該是一對亂碼才對。所以https本身就是防止重放攻擊的。

  • 中秋節和大豐收的關聯?
  • 其實人生大體是不開心的時候居多,大家是怎麼開解自己的呢?