0

私は自分のウェブサイトを完成させており、非常にSQLインジェクションを安全にしたいと考えています。その大部分は、潜在的なユーザー入力に対して mysql_real_escape_string() を通過して使用することです。

これは、「stripslashes」を使用して元のコンテンツを返してページに表示する必要がある場合に、ほとんどの場合問題ありません。ただし、キャリッジリターンを取得できないようです。

ユーザーがキャリッジ リターンを含む部分を送信する可能性がある場所がいくつかあります (メッセージは 1 つの例です。たとえば、'Hi John' で始まり、メイン メッセージに 2 回戻ります)。どうすればこれを修正できますか? Stripslashes は rnrn を含むメッセージを返すだけで、これは良くありません。

例として(すべての可能な入力をテストしようとしている)。

このテキスト:

Once upon a time there was a guy named "steve" or 'john' or backslash (\)

Then, two lines later, he left.

次のように SQL データベースに保存されます。

Once upon a time there was a guy named \"steve\" or \'john\' or backslash (\\)\r\n\r\nThen, two lines later, he left.

そして、ストリップスラッシュを使用すると、次のようになります(htmlに出力するために次のことを行っていることに注意してください - :

Once upon a time there was a guy named "steve" or 'john' or backslash (\)rnrnThen, two lines later, he left.

nl2br を試してみましたが、何らかの理由で何もしません。ここで何か考えたいと思います、どうもありがとう!

4

1 に答える 1

1

混乱していることがたくさんあります。

  1. mysql_real_escape_string()は、SQLインジェクションやユーザー入力とは何の関係もありません。
  2. 無条件のストリップスラッシュがあってはなりませんが、意図的にのみです。
  3. 適切に使用された場合、エスケープはデータベースに移動しません。リトリーブ時にストリップスラッシュは必要ありません。
  4. データベースにスラッシュがある場合は、過度のエスケープがあります。コードがスラッシュを2回追加するか、プレースホルダーを使用してエスケープを役に立たなくしている
于 2013-01-25T21:28:31.427 に答える