ホームページ > データベース > mysql チュートリアル > MySQL クエリに addslashes の代わりに mysql_real_escape_string を使用する理由

MySQL クエリに addslashes の代わりに mysql_real_escape_string を使用する理由

DDD
リリース: 2024-11-14 16:47:02
オリジナル
438 人が閲覧しました

Why Use mysql_real_escape_string Instead of addslashes for MySQL Queries?

mysql_real_escape_string とaddslashesの違いを理解する

PHPでは、データベースクエリで使用する前に文字列をエスケープするために、mysql_real_escape_stringとaddslashesという2つの関数が一般的に使用されます。どちらも同様の目的を果たしますが、考慮すべき微妙な違いがあります。

addslashes

この関数は、特定の文字の前にバックスラッシュを追加します: ' (一重引用符)、" (二重引用符) )、(バックスラッシュ)、および NUL (NULL バイト) の一部として解釈されるのを防ぐことで、SQL インジェクション攻撃から保護します。 query.

mysql_real_escape_string

この関数は、PHP 7.3.0 で非推奨となり、MySQL でエスケープする必要がある文字にバックスラッシュを追加します。 x00、n、r、x1a、' (一重引用符)、および " (二重引用符)。ただし、MySQL でのエスケープの実際の実装には追加の文字が含まれる場合があることに注意することが重要です。

mysql_real_escape_string でのエスケープ解除された文字の重要性

この 2 つの主な違い関数は、アッドスラッシュでエスケープされない文字にあります。

  • x00: この文字は NULL バイトを表し、C やその他のプログラミング言語で文字列の終わりをマークするためによく使用されます。エスケープすると、クエリの早期終了を防ぐことができます。
  • n: この文字は改行文字を表します。エスケープすると、すぐに次の行に戻るのではなく、クエリ内の文字列の一部として扱われるようになります。
  • r: この文字はキャリッジ リターン文字を表します。 n.
  • x1a: と同じ理由でエスケープすることが重要です。この文字は「control-Z」文字として知られており、MySQL クエリ内で予期しない動作を引き起こす可能性があります。エスケープすることで、潜在的な問題を回避できます。

推奨事項

通常、addslashes の代わりに、mysql_real_escape_string などのデータ プロバイダーのエスケープ関数を使用することをお勧めします。これにより、使用されている特定のデータベースに合わせて文字列が適切に準備されることが保証されます。 mysql_real_escape_string は非推奨ですが、PHP の新しいバージョンには、MySQL クエリで文字列をエスケープするための同様の置換関数が搭載される可能性があります。

以上がMySQL クエリに addslashes の代わりに mysql_real_escape_string を使用する理由の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート