-1

mysql_real_escape_stringPHPドキュメントページでこのコメントを読みました:

また、データベースにクエリを実行する前に $_COOKIE 配列をエスケープすることを忘れないでください。Firefox では、Cookie を編集し、有害な SQL クエリを挿入および挿入できます。

<?php 
  foreach ($_COOKIE as $key => $value) { 
    if(get_magic_quotes_gpc()) $_COOKIE[$key]=stripslashes($value); 
    $_COOKIE[$key] = mysql_real_escape_string($value); 
  } 
?>

これらの Cookie 値をクエリで使用する場合にのみ、これを行う必要があると考えるのは正しいですか? したがって、これらの Cookie の値を使用する SQL ステートメントがない場合、上記のように Cookie をエスケープする必要はありませんか?

私はmysql_queryの準備されていないステートメントを使用しています(私が使用しているすべての社内コードはmysql_queryを使用しています)

4

5 に答える 5

0

これらの Cookie 値をクエリで使用する場合にのみ、これを行う必要があると考えるのは正しいですか? したがって、これらの Cookie の値を使用する SQL ステートメントがない場合、上記のように Cookie をエスケープする必要はありませんか?

はい、もちろん ;)

私はmysql_queryの準備されていないステートメントを使用しています(私が使用しているすべての社内コードはmysql_queryを使用しています)

PDO または mysqli のいずれかを使用して、準備済みステートメントに移行してみてください

移行できない場合:を呼び出す前にmysql_real_escape_string()、mysql 接続を確立する必要があることに注意してください。これは、関数が現在の接続エンコーディングを使用して文字列を適切にエスケープするためです。後で接続すると、エスケープが間違っている可能性があります。

于 2013-05-31T14:08:49.800 に答える
0

このリマインダーは、Cookie から取得した値は、たとえ自分で設定したとしても、誰でも変更できるため、信頼できないことを伝えるためにあります。あ、はい。

もちろん、mysql_関数などを使用するべきではありませんが、それは知っていると思います (古いアプリケーションでも使用する必要があります)。

于 2013-05-31T14:10:39.450 に答える