前面這個文章 http://blog.csdn.net/kaosini/article/details/7646363已經介紹了XSS防禦的兩種方法,但是凡事還是應該以事實為依據,于是我測試了裡面提到的兩個方法
1.function RemoveXSS($val)
2.function filter_xss($string, $allowedtags = '')
$testXssString="<span>aaa</span><img SRC=\"javascr
ipt:alert('a');\" />";//aaa<img STYLE=\"background-image: url(javascript:alert('XSS'))\">
echo RemoveXss($testXssString);
//$testXssString=strip_tags($testXssString,"<span><img>");
//echo 'strip_tags:'.$testXssString;
echo filter_xss($testXssString,"<img>");
試驗結果是兩個方法都不行,實驗結果為:
<span>aaa</span><img SRC="javascr
ipt:alert('a');" /><br />aaa<img SRC="javascr
ipt:alert('a');" />
是以這兩個方法有問題,之前引用的文章說第二種方法靠譜,推薦,但我認為第一種方法比較好,代碼也比較清晰,跟蹤了代碼,發現是他的正則寫的少考慮了
,把它加進去就能過濾了。
個人認為我修正bug後,還有很多情況沒考慮到,歡迎大家多提意見,謝謝。