首先我們說一下,什麼是token???
token是在客戶端頻繁向服務端請求資料,服務端頻繁的去資料庫查詢使用者名稱和密碼並進行對比,判斷使用者名稱和密碼正確與否,並作出相應提示,在這樣的場景下,token便應運而生。
那麼token是服務端生成的一串字串,也就是令牌,最大的特點就是隨機性,不可**。一般黑客或軟體無法猜測出來。
那麼,token有什麼作用?又是什麼原理呢?
token一般用在兩個地方:
兩者在原理上都是通過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的作用及實現原理
1 首先,先了解一下request和session的區別 request 指在一次請求的全過程中有效,即從http請求到伺服器處理結束,返回響應的整個過程,存放在httpservletrequest物件中。在這個過程中可以使用forward方式跳轉多個jsp。在這些頁面裡你都可以使用這個變數。req...
token的作用及實現原理
1 首先,先了解一下request和session的區別 request 指在一次請求的全過程中有效,即從http請求到伺服器處理結束,返回響應的整個過程,存放在httpservletrequest物件中。在這個過程中可以使用forward方式跳轉多個jsp。在這些頁面裡你都可以使用這個變數。req...
python super 作用和原理
python 在類的繼承中,當前類中如果方法與基類 父類 的方法一樣,會覆蓋基類的方法。class base object defrun self print base start running class dog base defrun self print dog start running ...