剛剛說到XSS攻擊.

來源:互聯網
上載者:User
剛說到XSS攻擊..
我記得我之前做一個項目.就給檢測出存在XSS攻擊。

開始我沒有過濾提交的內容。

後來foreach 迴圈過濾每一個變數$_GET...$_POST...,發現不行。

然後只好寫了個函數 直接檢測 $_SERVER["SERVER_NAME"] . $_SERVER["REQUEST_URI"] 判斷直接 exit...

不知道大家都是怎麼處理這個問題的...


------解決方案--------------------
htmlspecialchars過濾
------解決方案--------------------
htmlspecialchars
------解決方案--------------------
探討
怎麼過濾 過濾 $_GET所有變數 ? 這樣沒用...我試過了.


引用:

htmlspecialchars過濾

------解決方案--------------------
PHP code
"dsa<>");foreach($array as &$value){     $value = htmlspecialchars($value);}var_dump($array);array(1) {  ["hello"]=>  &string(11) "dsa<>"}
------解決方案--------------------
探討

你用
foreach($_GET as &$value){
$value=htmlspecialchars($value);}

這樣來過濾?



引用:

引用:
怎麼過濾 過濾 $_GET所有變數 ? 這樣沒用...我試過了.


引用:

htmlspecialchars過濾


沒用是什……

------解決方案--------------------
給你這三個函數,你根據需求稍加修改就好了,以後要擷取內容的時候不管是get還是post傳值都用這樣的方法來擷取:
$變數名=Toget('參數名或表單內的項目名');

PHP code
//函數:擷取資料//參數:表單名,是否需要轉譯Function Toget($__k,$Slash=True){    IF($__k==""){Return False;}    IF(Array_key_exists($__k,$_REQUEST)){        $Value=IsSet($_POST["".$__k.""])?$_POST["".$__k.""]:$_GET["".$__k.""];    }Else{        Return False;    }    IF(Is_array($Value)){        $Value=Array_Filter($Value,'_nul');    }Else{        $Value=Trim($Value);        IF($Value==""){Return False;}    }    IF($Slash){        $Value=Addlash($Value);    }    //反饋結果    IF(Is_array($Value)){Return $Value;}    IF($Value=="" Or !Isset($Value)){        Return False;    }Else{        Return $Value;    }}function Addlash($Str){    !Defined('MAGIC_QUOTES_GPC') && Define('MAGIC_QUOTES_GPC',get_magic_quotes_gpc());    IF(!MAGIC_QUOTES_GPC){        IF(Is_array($Str)){            $keys=array_keys($Str);            Foreach($keys as $key){                $val=$Str[$key];unset($Str[$key]);                $Str[addslashes($key)]=Addlash($val);            }        }Else{            $Str=addslashes($Str);        }    }    Return $Str;}//清理數組中的空值//用法:Print_r (Array_Filter($Arr,'_nul'));Function _nul($param){    Return ($param!="") ? True : False;}
------解決方案--------------------
這個得mark一下,繼續~
------解決方案--------------------
XSS又叫CSS (Cross Site Script) ,跨站指令碼攻擊。它指的是惡意攻擊者往Web頁面裡插入惡意指令碼代碼,當使用者瀏覽該頁之時,嵌入其中Web裡面的指令碼代碼會被執行,從而達到惡意攻擊使用者的特殊目的。XSS屬於被動式的攻擊,因為其被動且不好利用,所以許多人常忽略其危害性。

伺服器端指令碼防止 XSS 的唯一手段是檢查傳入的資料中是否有 script 標記
當然,攻擊者還有 n 多的手段去直接在你的頁面中嵌入惡意代碼。這就不是伺服器端指令碼能解決的問題了
簡單的用 htmlspecialchars 處理一下,只適合於其後只將傳入的資料作為字串顯示的場合。
由於
對於 #7 的 顯然使用的檢測演算法不是最大匹配演算法,而是簡單的包含演算法
雖無大錯,但誤判率升高。寧可錯殺三千,不可放過一個




------解決方案--------------------
探討

引用:

你用
foreach($_GET as &amp;$value){
$value=htmlspecialchars($value);}

這樣來過濾?
  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.