「労働者が自分の仕事をうまくやりたいなら、まず自分の道具を研ぎ澄まさなければなりません。」 - 孔子、「論語。陸霊公」
表紙 > プログラミング > PHP で文字列をエスケープする場合、「addslashes」ではなく「mysql_real_escape_string」を選択する必要があるのはどのような場合ですか?

PHP で文字列をエスケープする場合、「addslashes」ではなく「mysql_real_escape_string」を選択する必要があるのはどのような場合ですか?

2024 年 11 月 22 日に公開
ブラウズ:816

When should you choose `mysql_real_escape_string` over `addslashes` for escaping strings in PHP?

mysql_real_escape_string と addslashes: 違いを理解する

PHP では、データベース クエリ用の文字列をサニタイズするために関数 mysql_real_escape_string と addlashes がよく使用されます。これらにはいくつかの類似点がありますが、データのセキュリティと整合性に影響を及ぼす可能性がある重要な違いがあります。

addslashes

addslashes は、次のような特定の文字をエスケープします。 SQL クエリで問題が発生します。これには、一重引用符 (')、二重引用符 (")、バックスラッシュ ()、および NUL (ヌルバイト) 文字が含まれます。これらの文字の先頭にバックスラッシュを追加することで、スラッシュが特殊文字として解釈されるのを防ぎ、SQL のリスクを最小限に抑えます。注射vulnerabilities.

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 によってエスケープされる文字ただし、\x00 や \x00 などの制御文字を含むスラッシュを追加することはできません。 \x1a.これらの文字は、データの破損やデータベース接続の終了を引き起こすなど、データベース内で予期せぬ結果を引き起こす可能性があります。

さらに、複数の文字を格納する場合には、行末文字 (\n および \r) をエスケープすることが重要になる場合があります。 -ラインデータ。適切にエスケープされていない場合、これらの文字によりデータに改行や復帰が導入され、読みやすさや使いやすさが損なわれる可能性があります。

結論

一方、addslashes は基本的なエスケープを提供します。 SQL クエリで一般的に問題となる文字を使用する場合、mysql_real_escape_string は、MySQL データベース向けの文字列をエスケープするためのより包括的で信頼性の高い選択肢です。 MySQL の特定の要件を考慮し、潜在的に破壊的な文字の幅広いセットをエスケープすることにより、mysql_real_escape_string はデータのセキュリティと整合性を強化します。

最新のチュートリアル もっと>

免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。

Copyright© 2022 湘ICP备2022001581号-3