關於token的一些內容

2021-08-01 09:47:57 字數 1023 閱讀 1460

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但不進行校驗」的情況,在session中增加了token,但服務端沒有對token進行驗證,根本起不到防範的作用。

還需注意的是,對資料庫有改動的增刪改操作,需要加token驗證,對於查詢操作,一定不要加token,防止攻擊者通過查詢操作獲取token進行csrf攻擊。但並不是這樣攻擊者就無法獲得token,只是增大攻擊成本而已。

php庫的token實現的實現方式

討論:我想知道token和sessionid的區別是什麼

關於ascii碼的一些內容

測試輸出 t到檔案 file.writealltext test.txt a tb tc 結果是 當然,如果我們不想要通過 t來設定,我們就可以通過ascii碼來設定,tab的asscii碼是9,可以通過 u0009輸出,所以可以修改如下 測試輸出 t到檔案 file.writealltext te...

關於CSS的一些基礎內容

最近用到了css,剛好學學。css cascading style sheet 中文名層疊樣式表,用於為html文件新增樣式控制,也是一種計算機語言。一 css語法 a css規則由選擇器和宣告組成,構造為selector,多個宣告之間用分號隔開。declaration又包含屬性property和值...

關於巨集的一些內容的總結

1.為什麼巨集定義裡經常出現 do while 0 answer 用一句話概括就是 使用dowhile 0 構造後的巨集定義不會受到大括號 分號等的影響,總是會按你期望的方式呼叫執行。比如 define foo x i i 如下呼叫 foo wolf 就會被擴充套件為 i i 但是如果這樣呼叫 if...