亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發 > ThinkPHP > 正文

ThinkPHP表單令牌驗證功能

2024-09-09 15:19:56
字體:
來源:轉載
供稿:網友

ThinkPHP新版內置了表單令牌驗證功能,可以有效防止表單的遠程提交等安全防護,表單令牌驗證相關的配置參數有:

  1. 'TOKEN_ON'=>true,  // 是否開啟令牌驗證 
  2. 'TOKEN_NAME'=>'__hash__',    // 令牌驗證的表單隱藏字段名稱 
  3. 'TOKEN_TYPE'=>'md5',  //令牌哈希驗證規則 默認為MD5 

如果開啟表單令牌驗證功能,系統會自動在帶有表單的模板文件里面自動生成以TOKEN_NAME為名稱的隱藏域,其值則是TOKEN_TYPE方式生成的哈希字符串,用于實現表單的自動令牌驗證.

自動生成的隱藏域位于表單Form結束標志之前,如果希望自己控制隱藏域的位置,可以手動在表單頁面添加__TOKEN__ 標識,系統會在輸出模板的時候自動替換,如果在開啟表單令牌驗證的情況下,個別表單不需要使用令牌驗證功能,可以在表單頁面添加__NOTOKEN__,則系統會忽略當前表單的令牌驗證.

如果頁面中存在多個表單,建議添加__TOKEN__標識,并確保只有一個表單需要令牌驗證.

模型類在創建數據對象的同時會自動進行表單令牌驗證操作,如果你沒有使用create方法創建數據對象的話,則需要手動調用模型的autoCheckToken方法進行表單令牌驗證,如果返回false,則表示表單令牌驗證錯誤,例如:

  1. $User = M("User"); // 實例化User對象 
  2. // 手動進行令牌驗證 
  3. if (!$User->autoCheckToken($_POST)){ 
  4. // 令牌驗證錯誤 

在ThinkPHP框架的View.class.php里定義了一個公共的模板替換函數,PHP代碼如下:

  1. protected function templateContentReplace($content) { 
  2.         // 系統默認的特殊變量替換 
  3.         $replace =  array
  4.             '../Public'     => APP_PUBLIC_PATH,// 項目公共目錄 
  5.             '__PUBLIC__'    => WEB_PUBLIC_PATH,// 站點公共目錄 
  6.             '__TMPL__'      => APP_TMPL_PATH,  // 項目模板目錄 
  7.             '__ROOT__'      => __ROOT__,       // 當前網站地址 
  8.             '__APP__'       => __APP__,        // 當前項目地址 
  9.             '__UPLOAD__'    => __ROOT__.'/Uploads'
  10.             '__ACTION__'    => __ACTION__,     // 當前操作地址 
  11.             '__SELF__'      => __SELF__,       // 當前頁面地址 
  12.             '__URL__'       => __URL__, 
  13.             '__INFO__'      => __INFO__, 
  14.         ); 
  15.         if(defined('GROUP_NAME')) 
  16.         { 
  17.             $replace['__GROUP__'] = __GROUP__;// 當前項目地址 
  18.         } 
  19.         if(C('TOKEN_ON')) { 
  20.             if(strpos($content,'{__TOKEN__}')) { 
  21.                 // 指定表單令牌隱藏域位置 
  22.                 $replace['{__TOKEN__}'] =  $this->buildFormToken(); 
  23.             }elseif(strpos($content,'{__NOTOKEN__}')){ 
  24.                 // 標記為不需要令牌驗證 
  25.                 $replace['{__NOTOKEN__}'] =  ''
  26.             }elseif(preg_match('/<//form(/s*)>/is',$content,$match)) { 
  27.                 // 智能生成表單令牌隱藏域 
  28.                 $replace[$match[0]] = $this->buildFormToken().$match[0]; 
  29.             } 
  30.         } 
  31.         // 允許用戶自定義模板的字符串替換 
  32.         if(is_array(C('TMPL_PARSE_STRING')) ) 
  33.             $replace =  array_merge($replace,C('TMPL_PARSE_STRING')); 
  34.         $content = str_replace(array_keys($replace),array_values($replace),$content); 
  35.         return $content
  36.     } 

上面的if(C('TOKEN_ON'))是對令牌驗證的開啟狀態進行判斷,若開啟則調用buildFormToken()方法,$_SESSION[$tokenName] = $tokenValue; 其實就是給$_SESSION['__hash__']賦值,如果不想進行令牌驗證,只要在頁面的之前加入{__NOTOKEN__}就行了,它會被函數替換成空.

在ThinkPHP的Model.class.php類里定義了令牌的驗證函數,PHP代碼如下:

  1. // 表單令牌驗證 
  2.         if(C('TOKEN_ON') && !$this->autoCheckToken($data)) { 
  3.             $this->error = L('_TOKEN_ERROR_'); 
  4.             return false; 
  5.         } 
  6.  
  7.   // 自動表單令牌驗證 
  8.     public function autoCheckToken($data) { 
  9.         $name   = C('TOKEN_NAME'); 
  10.         if(isset($_SESSION[$name])) { 
  11.             // 當前需要令牌驗證 
  12.             if(emptyempty($data[$name]) || $_SESSION[$name] != $data[$name]) { 
  13.                 // 非法提交 
  14.                 return false; 
  15.             } 
  16.             // 驗證完成銷毀session 
  17.             unset($_SESSION[$name]); 
  18.         } 
  19.         return true; 
  20.     } 

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
一区二区欧美在线| 亚洲国产精品热久久| 国产不卡视频在线| 日韩av在线免费| 理论片在线不卡免费观看| 色悠悠国产精品| 久久久亚洲福利精品午夜| 日韩欧美精品免费在线| 91福利视频在线观看| 国产精品青青在线观看爽香蕉| 亚洲精品720p| 懂色av中文一区二区三区天美| 蜜臀久久99精品久久久无需会员| 亚洲国产精品久久久久秋霞不卡| 欧美激情在线狂野欧美精品| 亚洲精品美女网站| 国产专区精品视频| 不卡av日日日| 国产精品久久久久久久9999| 国产精品成人播放| 精品国内亚洲在观看18黄| 亚洲精品综合精品自拍| 精品国产91久久久久久| 国产91精品黑色丝袜高跟鞋| 国产精品久久久av久久久| 日韩欧美在线视频| 伊人青青综合网站| 国产日韩中文字幕在线| 欧美午夜宅男影院在线观看| 成人免费视频xnxx.com| 亚洲色图激情小说| 欧美一区二区.| 久久男人资源视频| 亚洲第一中文字幕在线观看| 国产va免费精品高清在线观看| 久久精品亚洲热| 91精品免费视频| 亚洲国产精品va在线看黑人动漫| 欧美激情视频网址| 91精品一区二区| 欧美激情综合色综合啪啪五月| 亚洲va国产va天堂va久久| 国产欧美日韩中文| 成人免费自拍视频| 欧美激情精品久久久久久免费印度| 亚洲自拍偷拍区| 日韩精品高清在线观看| 国外视频精品毛片| 裸体女人亚洲精品一区| 色综合色综合久久综合频道88| 国产成人精品最新| 日韩视频免费在线观看| 欧美日韩一二三四五区| 97视频在线观看网址| 日韩一区二区av| 国产午夜一区二区| 97香蕉超级碰碰久久免费的优势| 欧美亚洲日本黄色| 国产aⅴ夜夜欢一区二区三区| 亚洲第一页在线| 亚洲乱码一区av黑人高潮| 69**夜色精品国产69乱| 日韩精品欧美激情| 久久视频在线免费观看| 国产综合久久久久| 亚洲人成在线免费观看| 18久久久久久| 亚洲第一网站男人都懂| 亚洲一区久久久| 成人福利网站在线观看11| 亚洲欧美中文字幕| 国产精品老女人视频| 欧美国产日韩一区二区在线观看| 超薄丝袜一区二区| 国产日韩欧美视频在线| 亚洲激情在线观看视频免费| 亚洲精品国产精品国自产在线| 久久久久久亚洲精品中文字幕| 日韩av最新在线| 国产日韩专区在线| 国产成+人+综合+亚洲欧洲| 亚洲人成网在线播放| 日韩中文字幕国产| 久久久久久12| 欧美日韩中文在线| 国产在线精品自拍| 色悠悠久久久久| 2019中文字幕全在线观看| 国产91精品在线播放| 成人午夜在线视频一区| 久久激情五月丁香伊人| 奇米一区二区三区四区久久| 亚洲欧美制服综合另类| 在线日韩av观看| 在线观看国产精品91| 8090理伦午夜在线电影| 亚洲www永久成人夜色| 日本成人精品在线| 91精品国产自产在线老师啪| 国产一区二区日韩精品欧美精品| 亚洲男人天天操| 波霸ol色综合久久| 国产精品十八以下禁看| 欧美日韩午夜视频在线观看| 国产性色av一区二区| 日韩精品欧美国产精品忘忧草| 色先锋资源久久综合5566| 国产噜噜噜噜噜久久久久久久久| 国产精品久久77777| 中文字幕欧美日韩精品| 亚洲欧美一区二区三区在线| 久久久久www| 日韩一区二区三区国产| 主播福利视频一区| 亚洲一区精品电影| 亚洲第一区第一页| 日韩av在线一区二区| 国外成人免费在线播放| 久久久精品在线观看| 亚洲国产精品小视频| 国产欧美日韩精品在线观看| 欧美一级bbbbb性bbbb喷潮片| 亚洲免费视频观看| 亚洲专区国产精品| 亚洲第一二三四五区| 亚洲人成电影在线播放| 奇米四色中文综合久久| 亚洲高清不卡av| 欧美激情视频在线| 青青草原成人在线视频| 亚洲国产一区二区三区在线观看| 欧洲s码亚洲m码精品一区| xvideos亚洲人网站| 久久久久久成人| 高清欧美性猛交| 国产一区二区三区高清在线观看| 国产99视频在线观看| 国产97在线播放| 国产日韩综合一区二区性色av| 国产精品久久久久久久一区探花| 欧美成人精品一区二区| 亚洲国产精品悠悠久久琪琪| 亚洲精品99999| 日本精品在线视频| 欧美在线xxx| 国产裸体写真av一区二区| 日韩欧美在线免费观看| 亚洲国产精品字幕| 日韩精品中文在线观看| 日韩少妇与小伙激情| 日本中文字幕不卡免费| 97久久精品人搡人人玩| 青青在线视频一区二区三区| 国产精品女视频| 国产一区二区三区直播精品电影| 国产91精品久久久| 亚洲国产成人爱av在线播放| 国产xxx69麻豆国语对白| 狠狠干狠狠久久| 91精品国产91久久久久久久久| 人人做人人澡人人爽欧美| 日本精品视频在线播放| 亚洲福利视频久久| 亚洲 日韩 国产第一|