ユーザーはテキストエリアにテキストを入力します。その後、mySQL データベースに直接挿入されます。私はそれにトリム、htmlentities、mysql_real_escape_stringを使用し、魔法の引用符を有効にしています。そのデータをテキストエリアに出力するときに、どのようにサニタイズする必要がありますか?
ご協力いただきありがとうございます。私はこれを行う正しい方法についてあまり確信が持てませんでした...
ユーザーはテキストエリアにテキストを入力します。その後、mySQL データベースに直接挿入されます。私はそれにトリム、htmlentities、mysql_real_escape_stringを使用し、魔法の引用符を有効にしています。そのデータをテキストエリアに出力するときに、どのようにサニタイズする必要がありますか?
ご協力いただきありがとうございます。私はこれを行う正しい方法についてあまり確信が持てませんでした...
htmlentities
保存するときは使用しないでください。表示する場合に使用htmlentities
します。経験則は、必要になるまでデータをエンコード/サニタイズしないことです。htmlentities
保存時にそれを行う場合、ユーザーが入力を編集したいときにテキストを行う必要がありhtml_entity_decode
ます。したがって、必要なものだけを消毒します。保存するときは、SQLインジェクションのためにサニタイズする必要があるので、それを行いますmysql_real_escape_string
。表示するときは XSS のサニタイズが必要なので、それを行いますhtmlentities
。
また、Darryl Hein のコメントを見たかどうかはわかりませんが、magic_quotes を有効にしたくありません。これらは非常に悪いことであり、PHP 5.3 で廃止され、PHP 6 では完全になくなります。
いつ使用するかについての Paolo の回答に加えてhtmlentities()
、古いバージョンの PHP を使用していない限り、mysql DB に挿入するためにサニタイズする正しい方法は、 mysqli 拡張機能の一部であるプリペアド ステートメントを使用することです。これにより、 を使用する必要がなくなります。mysql_real_escape_string()
それ以外は、カバーされていると思います。