0

重複の可能性:
PHP では単一引用符は自動的にエスケープされますか? では、クリーニングの必要性は何ですか?
PHP マジック クォートにもかかわらず SQL インジェクションが成功する

今日、引用符の自動エスケープについて質問し、魔法の引用符について学びました。スレッドは、Are single quotes escaped automatically in PHP? にあります。では、クリーニングの必要性は何ですか?.

魔法の引用符だけでは不十分であり、準備されたクエリを使用するだけでなく、常にユーザー入力を検証してクリーンアップする必要があるというコンセンサスに達しました。

ただし、これはこの質問につながります.マジッククォートが有効なサーバーでは、どのような種類のSQLインジェクションがマジッククォートによって課されるセキュリティ対策をバイパスしますか? 魔法の引用符が安全でないのはなぜですか?

魔法の引用符が安全ではないことを私に納得させるために、これらの手段を回避する注射の実際の例を見たいと思います. 次のコードを使用して、ローカル サーバーにテスト セットアップを作成しました。

$foo = $_POST['foo'];
$sql = "SELECT * FROM bar WHERE foo='".$foo."'";
$result = query($sql);

query() は、クエリを実行するために必要な通常のコードです。掃除は一切ありません。ただし、マジック クォートは有効です。

このセットアップで魔法の引用符をバイパスする注射の例はありますか?

乾杯、

エリック

4

1 に答える 1

0

問題は、マジック クォートがaddslashes()Unicode に対応していない PHP の関数を使用していることです (つまり、マルチバイト文字はエスケープされません)。

これで、必要な説得力がすべて得られるはずです。

于 2011-06-15T14:35:44.030 に答える