php表單加入Token防止重複提交

2021-09-13 21:49:47 字數 1123 閱讀 5807

token**

token,就是令牌,最大的特點就是隨機性,不可**。一般黑客或軟體無法猜測出來。

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

token一般用在兩個地方——防止表單重複提交、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攻擊。

<?php

/** php簡單利用token防止表單重複提交

* 此處理方法純粹是為了給初學者參考

*/session_start();

function set_token()

function valid_token()

//如果token為空則生成乙個token

if(!isset($_session['token']) || $_session['token']=='')

if(isset($_post['test']))else

}?>

php表單加入Token防止重複提交

php簡單利用token防止表單重複提交 此處理方法純粹是為了給初學者參考 session start function set token function valid token 如果token為空則生成乙個token if isset session token session token i...

php 表單加入Token防止重複提交

token token,就是令牌,最大的特點就是隨機性,不可 一般黑客或軟體無法猜測出來。token作用與原理 token一般用在兩個地方 兩者在原理上都是通過session token來實現的。當客戶端請求頁面時,伺服器會生成乙個隨機數token,並且將token放置到session當中,然後將t...

php表單加入Token防止重複提交的方法分析

token token,就是令牌,最大的特點就是隨機性,不可 一般黑客或軟體無法猜測出來。那麼,token有什麼作用?又是什麼原理呢?token一般用在兩個地方 防止表單重複提交 anti csrf攻擊 跨站點請求偽造 兩者在原理上都是通過session token來實現的。當客戶端請求頁面時,伺服...