我想確定,我沒有使用$ _POST或$ _GET的方式攻擊者可以利用(XSS攻擊,SQL注入) 。要查找我用$ _GET或$ _POST我用這個命令所有行:
egrep "_GET|_POST" -r -i MyFolder > dangerousUse.txt
dangerousUse.txt有439線。如果我這樣搜索:
egrep "\$_GET|\$_POST" -r -i MyFolder > dangerousUse.txt
dangerousUse.txt有0行。如果我這樣搜索:
egrep "_GET\[|_POST\[" -r -i MyFolder > dangerousUse.txt
dangerousUse.txt有385行。我認爲這是我想要的數字,但我希望$ -sign也能匹配。
我的第一個問題是:爲什麼第二個egrep-command沒有工作?
現在我確信,如果下面的命令之一已應用於輸入使用正確的:
mysql_real_escape_string(htmlspecialchars($input))
或mysql_real_escape_string (htmlspecialchars ($input))
或其他組合,帶空格。intval($input)
isset($input)
$input ==
或== $input
我怎麼能找到只有那些線,在$ _ POST或$ _GET是沒有這些功能的使用?也可以刪除dangerousUse.txt中的行,這些函數應用於此行中的每個$ _POST或$ _GET。
編輯:
egrep '\$_GET\[|\$_POST\[' -r -i MyFolder > dangerousUse.txt
作品,感謝VGE的答案的第一部分。現在dangerousUse.txt有385行。但第二個對我來說更重要。
用於第二部分,egrep -v
反轉匹配:
egrep '(isset|intval|mysql_real_escape_string\(htmlspecialchars|md5|datum_anpassen)[\w]*\(\$_' -i -v dangerousUse.txt > dangerousUse2.txt
我已經加入了殼的標籤,因爲你的問題是有關殼報價和逃跑。 – VGE 2011-01-24 08:08:26
當值首先寫入變量但後來被消毒時,您會做什麼? – poke 2011-01-24 08:16:38
http://www.joelonsoftware.com/articles/Wrong.html – 2011-01-26 05:42:46