5

これまでに魔法の引用符がオンになっている環境でプログラミングしたことはありません。今、私はそれがあるプロジェクトに取り組んでいます。これは、ユーザーが受け入れたデータの状況を設定する方法です。

$first_name = $_POST['first_name']
if(!get_magic_quotes_gpc()) {
    $first_name = mysql_real_escape_string($first_name);
}

そのフィルタリングでは、マジック クォートが有効になっている場合でも、SQL インジェクション攻撃を受けやすいのでしょうか?

私は本当にクエリを壊すあらゆる種類のSQLインジェクションについてのみ心配しています...他のホワイトリスト、 htmlspecialchar() -ingなどは、他の領域のために用意されています。

いくつかの同様の SO の質問を見ると、代わりに魔法の引用符をチェックし、有効になっている場合はデータに対して「stripslashes」を実行し、常にエスケープ機能を実行することをお勧めしているようです。ただし、サイト内の既存のコードはすべてオンになっていると想定しているため、この方法で行うのは少し心配です。

ありがとう!

4

2 に答える 2

1

レガシー システムで作業することは、実際の PITA になる可能性があります。特に、PHP のようなものでは、かなり悪質で安全でないコードを古い時代に書くことができます。

あなたは実際にあなたの質問の一部にすでに答えていると思います:

いくつかの同様の SO の質問を見ると、代わりに魔法の引用符をチェックし、有効になっている場合はデータに対して「stripslashes」を実行し、常にエスケープ機能を実行することをお勧めしているようです。ただし、サイト内の既存のコードはすべてオンになっていると想定しているため、この方法で行うのは少し心配です。

また、コード レビューを開始しようとします。使用データが書き込まれている、またはデータベース クエリで使用されているすべての場所を見つけてから、より安全なエスケープに置き換えます。最終的には、これらの厄介なクエリをすべて置き換えて、魔法の引用符を永久にオフにすることができます。

于 2011-05-22T23:14:13.337 に答える
0

(正しく)使用すればmysql_real_escape_string、SQL インジェクションのリスクはありません。入力がOKというわけではありません。マジック クォートの設定やその他の設定が正しくない場合、変数に正しくない値が含まれている可能性があります。それでも安全です。

于 2011-05-22T22:05:53.180 に答える