ThinkPHP 表單令牌驗證功能

令牌驗證
ThinkPHP新版內置了表單令牌驗證功能,能夠有效防止表單的遠程提交等安全防禦。
 
表單令牌驗證相關的配置參數有:
'TOKEN_ON'=>true,  // 是否開啓令牌驗證
'TOKEN_NAME'=>'__hash__',    // 令牌驗證的表單隱藏字段名稱
'TOKEN_TYPE'=>'md5',  //令牌哈希驗證規則默認爲MD5
 
若是開啓表單令牌驗證功能,系統會自動在帶有表單的模板文件裏面自動生成以TOKEN_NAME爲名稱的隱藏域,其值則是TOKEN_TYPE方式生成的哈希字符串,用於實現表單的自動令牌驗證。
 
說明:每刷新一次頁面都會從新生成一次隱藏域中的值
 
自動生成的隱藏域位於表單Form結束標誌以前,若是但願本身控制隱藏域的位置,能夠手動在表單頁面添加{__TOKEN__} 標識,系統會在輸出模板的時候自動替換。若是在開啓表單令牌驗證的狀況下,個別表單不須要使用令牌驗證功能,能夠在表單頁面添加{__NOTOKEN__},則系統會忽略當前表單的令牌驗證。
若是頁面中存在多個表單,建議添加{__TOKEN__}標識,並確保只有一個表單須要令牌驗證。
模型類在建立數據對象的同時會自動進行表單令牌驗證操做,若是你沒有使用create方法建立數據對象的話,則須要手動調用模型的autoCheckToken方法進行表單令牌驗證。若是返回false,則表示表單令牌驗證錯誤。例如:
$User = M("User"); // 實例化User對象
// 手動進行令牌驗證
if (!$User->autoCheckToken($_POST)){
// 令牌驗證錯誤
}安全

相關文章
相關標籤/搜索