1

重複の可能性:
SQL インジェクションを防ぐには?

私は自分のサイトにコメント システムを設定していますが、これが保存されているかどうかを知りたいと思っていました。PHPとMySQLを使用しています。- 以下のコードは使用しないでください。ひどく安全ではありません -

新しいコメントの作成:

  1. ユーザーが $comment を書き、それを送信します
  2. $comment = addslashes($comment);
  3. $comment を MySQL データベースに挿入します

コメントを読む:

  1. ユーザーがコメントをリクエストすると、データベースが $comment を配信します
  2. $comment = htmlspecialchars(stripslashes($comment));
  3. $コメントをエコーし​​ます。

システムは、HTML 操作と MySQL インジェクションに対して安全でなければなりません。そして、私が気付いていない他のすべての厄介なもの。私はそれを正しくやっていますか?

おまけの質問: MySQL テーブルの $comment にはどの照合を使用すればよいですか?

編集:うわー、私の質問がこれほど大きな議論を引き起こすとは思いませんでした。すべての回答に感謝します:)

4

2 に答える 2

10

最初から準備済みステートメントに切り替えることを検討してください:-)

今は少しオーバーヘッドがかかるように見えるかもしれませんが、すべてのパラメーターをエスケープすることを心配するのに多くの時間を費やすことができます。

ここに良いチュートリアルがあります: http://www.kitebird.com/articles/php-pdo.html .

ユーザー定義のコンテンツを出力する場合でもhtmlspecialchars、XSS の脆弱性を考慮して使用する必要があります。

于 2012-12-23T01:28:18.847 に答える
-5

の代わりmysql_real_escape_stringに (またはライブラリに付属するエスケープ関数) を使用しますaddslashes

は使用しないでくださいstripslashes。これらは MySQL によって解析されたために既に削除されており、入力内の正当なバックスラッシュを消去する危険性があります。

照合には、お好きなものを使用してください。私latin_general_ciは .

于 2012-12-23T01:23:21.887 に答える