防盜鏈之URL參數簽名 總結


一、概述

  傳統的 IP 禁用、referer 防盜鏈、User-Agent 防盜鏈、地區訪問控制等防盜鏈措施已經無法完全滿足用戶要求,所以開發出URL參數簽名方式來防盜鏈

二、實現

  Token防盜鏈是通過對時間有關的字符串進行簽名,將時間、簽名信息通過一定的方式傳遞給 web server節點服務器作為判定依據,web server節點依據約定的算法判斷來訪的 URL 是否有訪問權限。如果通過,執行下一步;如果不通過,響應 HTTP 403 狀態碼或者通過 302 跳轉到其他 URL。

  1、簽名參數

    etime: URL 過期的時間,必須是 UNIX TIME 格式,如:2017/3/9 9:19:0 -> 1489022340

    secret: 和 平台約定的簽名密鑰,需要在 平台后端管理控制台配置,(服務->  配置 -> 防盜鏈 -> Token 防盜鏈);

  2、算法:

    sign = MD5( secret & etime & URI )

    Token = MD5( secret & etime & URI ){ 中間 8 位 } + etime

  假設當前的 UNIX TIME 時間為:1370000000,某圖片資源(例如:http://test.example.com/dir/pic.jpg)10 分鍾有效,則:

    etime = 1370000000 + 600 = 1370000600

    uri = '/dir/pic.jpg'

    sign = MD5( secret & etime & URI ) = xxxxxxxxxxxxabcdefghyyyyyyyyyyyy

    Token  = MD5( secret & etime & URI ){ 中間 8 位 } + etime = abcdefgh1370000600

  最后經過客戶端業務服務器生成的 URL 為:

    http://test.example.com/dir/pic.jpg?token=abcdefgh137000060

 三、驗證

  • 根據約定解析取出過期時間,和當前 web Server節點服務器時間進行比較,確認請求是否過期

  • 根據上文約定好的算法計算方式,計算出 MD5 加密串后,和 URL 中的加密串進行比較,驗證加密串是否一致

  • 如果以上兩個步驟都驗證通過,請求才會被認為是合法的,這時 web server 會請求資源響應給客戶端,否則會被認為是非法請求,直接響應 HTTP status code 403


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM