Token作用和原理

首先我們說一下,什麼是token???

Token是在客戶端頻繁向服務端請求數據,服務端頻繁的去數據庫查詢用戶名和密碼並進行對比,判斷用戶名和密碼正確與否,並作出相應提示,在這樣的場景下,Token便應運而生。

那麼Token是服務端生成的一串字符串,也就是令牌,最大的特點就是隨機性,不可預測。一般黑客或軟件無法猜測出來。

那麼,Token有什麼作用?又是什麼原理呢?

Token一般用在兩個地方:

  • 1)防止表單重複提交、
  • 2)anti csrf攻擊(跨站點請求僞造)。

兩者在原理上都是通過session token來實現的。

當客戶端請求頁面時,服務器會生成一個隨機數Token,並且將Token放置到session當中,然後將Token發給客戶端(一般通過 構造hidden表單)。下次客戶端提交請求時,Token會隨着表單一起提交到服務器端。

然後,如果應用於“ anti csrf 攻擊 ”,則服務器端會對Token值進行驗證,判斷是否和session中的Token值相等。若相等,則可以證明請求有效,不是僞造的。

不過,如果應用於“防止表單重複提交”。服務器端第一次驗證相同過後,會將session中的Token值更新下,若用戶重複提交,第二次的驗證判斷將失敗,因爲用戶提交的表單中的Token沒變,但服務器端session中Token已經改變了。

上面的session應用相對安全,但也叫繁瑣,同時當多頁面多請求時,必須採用多Token同時生成的方法,這樣佔用更多資源,執行效率會降低。

因此,也可用cookie存儲驗證信息的方法來代替 session Token。

比如,應對“重複提交”時,當第一次提交後便把已經提交的信息寫到cookie中,當第二次提交時,由於cookie已經有提交記錄,因此第二次提交會失敗。

不過,cookie存儲有個致命弱點,如果cookie被劫持(xss攻擊很容易得到用戶cookie),那麼又一次gameover。黑客將直接實現csrf攻擊。

所以,安全和高效相對的。具體問題具體對待~~~~~~~~完。

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章