PHP-表單令牌防止重復(fù)提交原理
PHP-表單令牌防止重復(fù)提交原理?
慕村225694
2019-04-03 11:07:22
TA貢獻(xiàn)1785條經(jīng)驗(yàn) 獲得超8個贊
最常用的方法就是利用token。即:
1、在生成頁面的時候生成一個token(隨機(jī)字符串),并把它同時寫入表單的某個hidden中,和服務(wù)端的session中。
2、客戶端提交表單到服務(wù)器時,比對表單中的token與session中的token是否一致。若不一致則認(rèn)為是無效的請求。
3、不管第2步的校驗(yàn)是否通過,token只要使用一次后就立即作廢(即:從session中銷毀)。同時token也可以關(guān)聯(lián)時間信息,超時后也自動作廢。
這樣,即便客戶端重復(fù)提交,也只有第一次的請求能夠成功。
TA貢獻(xiàn)1852條經(jīng)驗(yàn) 獲得超1個贊
可以在當(dāng)前頁面里設(shè)置一個變量,通過這個變量來確定是否已經(jīng)提交了,如果提交過了就不再提交。
示例代碼:
123456789101112131415 | <script language= "javascript" > var checkSubmitFlg = false ; function checkSubmit(){ if (checkSubmitFlg == true ){ return false ; //當(dāng)表單被提交過一次后checkSubmitFlg將變?yōu)閠rue,根據(jù)判斷將無法進(jìn)行提交。 } checkSubmitFlg == true ; return true ; } < /script > < form name= "form1" method= "post" onsubmit= "return checkSubmit();" > ……….. < /form> |
舉報