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

1、前言前端

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

2、後端怎麼作?ajax

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

  二、cookie校驗+session;後端

  三、經過判斷refer,限制只容許某些域名下訪問;跨域

  四、直接限制ip,簡單粗暴;安全

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

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

3、前端能夠怎麼作?session

主要是考慮身份認證

  一、請求頭添加token  

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

  二、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

相關文章
相關標籤/搜索