无码色色,久久久久久免费精品喷水,美女把胸罩解开让男生摸,欧美一级在线观看视频,色亚洲天堂,色综合天天综合给合国产

咨詢電話:023-88959644    24小時服務(wù)熱線:400-023-8809
NEWS CENTER ·
新聞動態(tài)
關(guān)注中技互聯(lián) 關(guān)注前沿

如何防止偽造跨站請求!

發(fā)表日期:2011-09-05    文章編輯:王東    瀏覽次數(shù):10    標簽:

偽造跨站懇求引見

  偽造跨站懇求比擬難以防備,而且危害宏大,攻擊者能夠經(jīng)過這種方式惡作劇,發(fā)spam信息,刪除數(shù)據(jù)等等。這種攻擊常見的表現(xiàn)方式有:

  偽造鏈接,誘惑用戶點擊,或是讓用戶在不知情的狀況下訪問

  偽造表單,誘惑用戶提交。表單能夠是躲藏的,用圖片或鏈接的方式假裝。

  比擬常見而且也很低價的防備手腕是在一切可能觸及用戶寫操作的表單中參加一個隨機且變換頻繁的字符串,然后在處置表單的時分對這個字符串停止檢查。這個隨機字符串假如和當前用戶身份相關(guān)聯(lián)的話,那么攻擊者偽造懇求會比擬費事。

  yahoo對付偽造跨站懇求的方法是在表單里參加一個叫.crumb的隨機串;而facebook也有相似的處理方法,它的表單里常常會有post_form_id和fb_dtsg。

  隨機串代碼完成

  我們依照這個思緒,山寨一個crumb的完成,代碼如下:

<?php class Crumb {                                                                                                        CONST SALT = \"your-secret-salt\";                                                               static $ttl = 7200;                                                                                                 static public function challenge($data) {         return hash_hmac(\'md5\', $data, self::SALT);     }                                                                                                                   static public function issueCrumb($uid, $action = -1) {         $i = ceil(time() / self::$ttl);         return substr(self::challenge($i . $action . $uid), -12, 10);     }                                                                                                                   static public function verifyCrumb($uid, $crumb, $action = -1) {         $i = ceil(time() / self::$ttl);                                                                                     if(substr(self::challenge($i . $action . $uid), -12, 10) == $crumb ||             substr(self::challenge(($i - 1) . $action . $uid), -12, 10) == $crumb)             return true;                                                                                                    return false;     }                                                                                                               } 

  代碼中的$uid表示用戶獨一標識,而$ttl表示這個隨機串的有效時間。

  應(yīng)用示例

  結(jié)構(gòu)表單

  在表單中插入一個躲藏的隨機串crumb

<input type=\"hidden\" name=\"crumb\" value=\"<?php echo Crumb::issueCrumb($uid)?>\">  
 


  處置表單 demo.php

  對crumb停止檢查

<?php if(Crumb::verifyCrumb($uid,    偽造跨站懇求引見
  偽造跨站懇求比擬難以防備,而且危害宏大,攻擊者能夠經(jīng)過這種方式惡作劇,發(fā)spam信息,刪除數(shù)據(jù)等等。這種攻擊常見的表現(xiàn)方式有:
  偽造鏈接,誘惑用戶點擊,或是讓用戶在不知情的狀況下訪問
  偽造表單,誘惑用戶提交。表單能夠是躲藏的,用圖片或鏈接的方式假裝。
  比擬常見而且也很低價的防備手腕是在一切可能觸及用戶寫操作的表單中參加一個隨機且變換頻繁的字符串,然后在處置表單的時分對這個字符串停止檢查。這個隨機字符串假如和當前用戶身份相關(guān)聯(lián)的話,那么攻擊者偽造懇求會比擬費事。
  yahoo對付偽造跨站懇求的方法是在表單里參加一個叫.crumb的隨機串;而facebook也有相似的處理方法,它的表單里常常會有post_form_id和fb_dtsg。
  隨機串代碼完成
  我們依照這個思緒,山寨一個crumb的完成,代碼如下:
<?php class Crumb {                                                                                                        CONST SALT = \"your-secret-salt\";                                                               static $ttl = 7200;                                                                                                 static public function challenge($data) {         return hash_hmac(\'md5\', $data, self::SALT);     }                                                                                                                   static public function issueCrumb($uid, $action = -1) {         $i = ceil(time() / self::$ttl);         return substr(self::challenge($i . $action . $uid), -12, 10);     }                                                                                                                   static public function verifyCrumb($uid, $crumb, $action = -1) {         $i = ceil(time() / self::$ttl);                                                                                     if(substr(self::challenge($i . $action . $uid), -12, 10) == $crumb ||             substr(self::challenge(($i - 1) . $action . $uid), -12, 10) == $crumb)             return true;                                                                                                    return false;     }                                                                                                               }
 
  代碼中的$uid表示用戶獨一標識,而$ttl表示這個隨機串的有效時間。
  應(yīng)用示例
  結(jié)構(gòu)表單
  在表單中插入一個躲藏的隨機串crumb

<input type=\"hidden\" name=\"crumb\" value=\"<?php echo Crumb::issueCrumb($uid)?>\">  

 
 
  處置表單 demo.php
  對crumb停止檢查
___FCKpd___2
 
POST[\'crumb\'])) {     //依照正常流程處置表單 } else {     //crumb校驗失敗,錯誤提示流程 }

 

如沒特殊注明,文章均為中技互聯(lián)原創(chuàng),轉(zhuǎn)載請注明來自www.tmsmall666.cn
相關(guān)新聞

CopyrightZJCOO technology Co., LTD. All Rights Reserved.    

渝ICP 備11003429號

  • qq客服
  • 公眾號
  • 手機版
  • 新浪微博