mysql_real_escape_string と addlashes: 違いを理解する
PHP では、データベース クエリ用の文字列をサニタイズするために関数 mysql_real_escape_string と addlashes がよく使用されます。これらにはいくつかの類似点がありますが、データのセキュリティと整合性に影響を与える可能性がある重要な違いがあります。
addslashes
addslashes は、次のような特定の文字をエスケープします。 SQL クエリで問題が発生します。これには、一重引用符 (')、二重引用符 (")、バックスラッシュ ()、および NUL (ヌルバイト) 文字が含まれます。これらの文字の先頭にバックスラッシュを追加することで、スラッシュが特殊文字として解釈されるのを防ぎ、SQL のリスクを最小限に抑えます。
mysql_real_escape_string
mysql_real_escape_string は、MySQL で使用するために特別に設計された、より特殊な関数であり、拡張セットの先頭にバックスラッシュを付加する MySQL ライブラリ関数 mysql_real_escape_string を呼び出します。これらの文字には、x00 (ゼロバイト)、n (ラインフィード)、r (キャリッジ リターン)、および x1a (ファイルの終わり) が含まれます。
主な違い
addslashes と mysql_real_escape_string の主な違いは、mysql_real_escape_string がエスケープする文字のセット (特定の制御文字や行末を含む) です。
さらに、mysql_real_escape_string は、文字列をエスケープするときに MySQL の特定の要件を認識します。そのため、使用されている MySQL のバージョンに基づいて、異なるエスケープ ルールが実装される場合があります。たとえば、MySQL の最近のバージョンでは通常、一重引用符をエスケープするために二重引用符が使用されますが、以前のバージョンではバックスラッシュが使用されます。 mysql_real_escape_string はそれに応じて適応し、使用中の特定の MySQL バージョンに対して文字列が適切にエスケープされるようにします。
mysql_real_escape_string によってエスケープされる追加文字の重要性
mysql_real_escape_string によってエスケープされる文字ただし、addslashes には x00 や x1a などの制御文字が含まれません。これらの文字は、データの破損やデータベース接続の終了を引き起こすなど、データベース内で予期せぬ結果を引き起こす可能性があります。
さらに、複数行を格納する場合には、行末文字 (n と r) をエスケープすることが重要になる場合があります。データ。適切にエスケープされていない場合、これらの文字によりデータに改行や復帰が導入され、読みやすさや使いやすさが損なわれる可能性があります。
結論
addslashes は、SQL クエリでよくある問題のある文字に対する基本的なエスケープを提供しますが、mysql_real_escape_string は、MySQL データベース向けの文字列をエスケープするためのより包括的で信頼性の高い選択肢です。 MySQL の特定の要件を考慮し、潜在的に破壊的な文字の幅広いセットをエスケープすることにより、mysql_real_escape_string はデータのセキュリティと整合性を強化します。
以上がPHP で文字列をエスケープする場合、「addslashes」ではなく「mysql_real_escape_string」を選択する必要があるのはどのような場合ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。