RestFul規范的API接口如何保證接口和數據的安全性


一、如何保證接口安全?
問題1.請求參數被篡改;
問題2.接口被重復調用;

解決方案:

1.時間戳超時機制,客戶端調用接口時帶上當前的時間戳 timetamp,用於防止DoS攻擊,服務器接口收到 timetamp 后跟服務器當前系統時間進行對比,如果大於一定時間(比如設置為10秒),則認為請求失敗,那么這個請求將被攔截掉。僅僅解決了接口被重復調用的問題,時間戳還是會被修改,所以要結合 sign 簽名機制一起處理來保證接口的安全。由於服務器的時間和客戶端的時間是存在時間差的,所以客戶端時間必須和服務端時間做校驗,客戶端應用啟動后通過接口獲取服務器時間 ServerTime,保存本地,並同時記錄當前客戶端時間 LocalTime1,當下次請求接口的時候,時間即是:LocalTime2 - LocalTime1 + ServerTime。

2.簽名機制,對參數進行簽名,防止參數被非法篡改。sign一般是將所有非空參數按照升序排序然后+key+timestamp拼接在一起,然后使用SHA1、MD5(timestamp+業務參數:將timestamp、業務參數以字母升序(A-Z)排序,按'key1=value1'+ '&' + 'key2=value2'連接所有參數得到字符串signStr)等加密算法進行加密,作為接口中的一個參數sign來傳遞,也可以將sign放到請求頭中。服務器端收到請求以同樣的算法得到簽名,和當前簽名進行對比,如果不一樣,說明參數被更改過,直接返回錯誤表示,簽名機制保證了數據不會被篡改。

二、如何保證接口數據的安全?
問題:請求的參數和返回的數據都有可能被別人攔截獲取,而這些數據又是明文的,所以只要被攔截,就能獲取相應的業務數據。

解決方案:對所有請求和響應都進行加解密操作,前端提交的數據按照AES或者DES或者RSA加密算法,進行加密,然后提交到服務端,服務端對參數進行解密;響應數據使用AES或者DES或者RSA加密算法加密,客戶端進行解密。

 

參考文章:

接口安全:https://www.cnblogs.com/ming-szu/p/8926179.html

接口安全:https://zhuanlan.zhihu.com/p/200922940

 數據安全:https://blog.csdn.net/tianshan2010/article/details/113483393


免責聲明!

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



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