web安全—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攻擊。
所以,安全和高效相對的。具體問題具體對待吧。
此外,要避免“加token但不進行校驗”的情況,在session中增加了token,但服務端沒有對token進行驗證,根本起不到防範的作用。
還需注意的是,對資料庫有改動的增刪改操作,需要加token驗證,對於查詢操作,一定不要加token,防止攻擊者通過查詢操作獲取token進行csrf攻擊。但並不是這樣攻擊者就無法獲得token,只是增大攻擊成本而已。
相關文章
- Json web tokenJSONWeb
- JSON Web Token - 在Web應用間安全地傳遞資訊(zhuan)JSONWeb
- JWT(Json WEB Token)JWTJSONWeb
- 理解JSON Web TokenJSONWeb
- JSON Web Token 的理解JSONWeb
- 理解JSON Web Token (一)JSONWeb
- 深入淺出 JSON Web TokenJSONWeb
- JSON Web Token 使用詳解JSONWeb
- JSON Web Token(JWT) 簡介JSONWebJWT
- JSON Web Token 入門教程JSONWeb
- Node.js JSON Web Token 使用Node.jsJSONWeb
- JSON WEB TOKEN 從原理到實戰JSONWeb
- Web應用怎樣獲取Access Token?Web
- JSON Web Token in ASP.NET Web API 2 using OwinJSONWebASP.NETAPI
- HDFSRPC安全認證Token篇推廣RPC
- web安全Web
- json web token for Egg.js 實踐JSONWeb
- Rails與web安全[Web安全大家談]薦AIWeb
- web安全類Web
- Web安全概述Web
- PHP web 安全PHPWeb
- 6.9找回機制介面安全&驗證碼token介面
- 除了cookie,你還可以用jwt(json web token)!CookieJWTJSONWeb
- Web技術:Token與Session究竟是什麼呢WebSession
- python使用JWT(json web token)實現驗證PythonJWTJSONWeb
- 【轉】基於Token的WEB後臺認證機制Web
- 談談 Web 安全Web
- 淺談 Web 安全Web
- Web安全測試Web
- WEB安全知多少Web
- Web安全-XSSWeb
- Web安全基礎Web
- web安全系列Web
- Web安全實戰Web
- web安全淺析Web
- Web框架自身安全Web框架
- web安全面經Web
- ASP.NET Core Web Api之JWT重新整理Token(三)ASP.NETWebAPIJWT