攻撃者が(XSS攻撃、SQLインジェクション)を利用できる方法で$ _POSTまたは$ _GETを使用していないことを確認したいと思います。 。私は、このコマンドを使用$ _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行があります。私はこれが私が望む数字だと思うが、私は$記号も一致させたい。
私の最初の質問は、なぜ2番目のegrepコマンドが機能しないのですか?空白と
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
:
あなたが「良い」フィルタアウトすることができますが
-v
(元に戻す)スイッチを使用して、あまりにも、grepのを使って、「dangerousUse.txt」から一致します引用符とエスケープシェル。 – VGE値が最初に変数に書き込まれた後、後で消されたときにはどうしますか? – poke
http://www.joelonsoftware.com/articles/Wrong.html –