細說RESTful API安全之防止數據篡改


通常可以使用MD5或SHA-1對API參數進行簽名,在服務器端通過校驗簽名結果來驗證數據是否被修改。


舉個例子:添加用戶

          地址:http://192.168.0.10/v1/user/add?sign=MD5(請求參數 + timestamp + access_token)&timestamp=1496978464401
          方法:POST
        消息頭:
          Host:192.168.0.10
    User-Agent:Mozilla/5.0 (Windows NT 6.1; WOW64; rv:53.0) Gecko/20100101 Firefox/53.0
        Accept:text/json, */*; q=0.01
  Content-Type:application/json; charset=UTF-8
Content-Length:67
    Connection:keep-alive
Authentication:Basic Y2hlbmNoPTExMTExMQ==
    
      請求參數:
{name: "zhangsan", email: "zhangsan@org.com", phone: "1318907653"}

1. acess_token通過消息頭Authentication傳遞。
2. 將請求參數,當前時間戳以及access_token一起進行計算簽名:sign=MD5(請求參數 + timestamp + access_token),服務器端接收到參數時,先進行簽名驗證,如果簽名不正確,則說明數據被修改,返回400。

但是,簡單的MD5簽名規則也可能被破解,攻擊者只需要使用相同的規則即可輕松修改數據。
所以,建議在對參數進行簽名時添加鹽值。為了避免鹽值保存在客戶端被泄露,可以動態從服務器端動態獲取鹽值,即:sign=MD5(請求參數 + timestamp + access_token + 動態鹽值)。

 


免責聲明!

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



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