從前端角度看ajax如何保護接口的安全性


一、前言

  在web中,使用Ajax調用API,撇開跨域不講,怎么做安全驗證,防止別的網站調用呢?假設沒有做安全保障,任何用戶都可以直接訪問接口,這回暴露出極大的安全隱患。

二、后端怎么做?

  1、一些接口強制用戶必須登錄,通過查看sessionId來做判別,沒登錄則不返回數據或者返回401或者403;

  2、cookie校驗+session;

  3、通過判斷refer,限制只允許某些域名下訪問;

  4、直接限制ip,簡單粗暴;

       5、簽名加密參數,不過會增加服務器負載

  以上我理解的可能過於片面,真正的后端已經要進行更多的校驗;

三、前端可以怎么做?

主要是考慮身份認證

  1、請求頭添加token  

$.ajax({
   type: "GET",
   url: "XXXXX",
   beforeSend: function(request) {
      request.setRequestHeader("token", "*********");
   },
   success: function(result) {
                
   }
});

  2、token怎么來?

  請求指紋: 一個請求有很多指紋信息,比如說請求的url和url中的信息,('/books'),請求的ip,請求的UA,請求的標頭信息,等等。請求指紋來計算token的話,可以保證無狀態特性。

  依賴ip: 對請求的客戶端 ip 值進行 hash 來作為 token;這樣是沒有狀態的。

  依賴session: 這種方法很適用於web網站,就是當用戶登錄后,對用戶的請求根據用戶的信息生成 token 存放到 session 中。

  下面是看網上的別人設計的,其實看具體設計了。

  token = md5(IP + 隨機數 + 時間戳 + UID + 秘鑰);//這個秘鑰最好隨着版本更換

 

--------------------------------------以后想到再慢慢加了----------------------------------------

 參考:

http://blog.jobbole.com/99816/

https://segmentfault.com/q/1010000002500378/a-1020000002502912

https://segmentfault.com/q/1010000006185859

https://www.v2ex.com/t/109392

 


免責聲明!

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



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