PHP のセキュリティは、デフォルト設定 php.ini-dist に「マジック クォート」と呼ばれる magic_quotes_gpc = On が含まれているという事実にあります。これは、PHP 初心者にとって非常に便利ですが、マジック クォートがオンになっている場合でも SQL インジェクションが発生する可能性があります。可能ですが、少なくともシステムのリスクは大幅に軽減されます。」 (PHP マニュアル)。ただし、これは PHP コードの移植性に影響を及ぼし、マジック クオートでエスケープされたすべてのデータをデータベースに書き込む必要はないため、プログラムの実行効率に影響を与えるため、addslashes() を使用することをお勧めします。したがって、
magic_quotes_gpc = php.ini でオフにすることをお勧めします。
ここでは、magic_quotes_gpc がオンになっているかどうかを関数で判定し、addslashes() が必要かどうかを判定しています。 もちろん、これは効率に影響する可能性があります。
PHP システム設定ファイル php.ini には 3 つのマジック クオート設定オプションがあります:
マジッククオート設定オプション | 説明 | ランタイムの変更点 | PHPのデフォルト値 |
magic_quotes_gpc | オンにすると影響します HTTP リクエスト データ (GET、POST、COOKIE) に変換します。 | いいえ | オン |
magic_quotes_runtime | 開いた場合、ほとんどの データベースやテキスト ファイルなどの外部ソースからデータを取得して返す関数の場合、返されるデータはバックスラッシュでエスケープされます。 (magic_quotes_gpc = On の場合) | はい | オフ |
magic_quotes_sybase | 閉じるとすべて
(一重引用符)、" (二重引用符)、(バックスラッシュ)、および NULL 文字はバックスラッシュで自動的にエスケープされます。これは、addslashes() とまったく同じ効果があります。 オンの場合、一重引用符はバックスラッシュの代わりに一重引用符を使用してエスケープされます。このオプションは完全にオーバーライドします magic_quotes_gpc。両方のオプションをオンにすると、一重引用符がエスケープされます。二重引用符、バックスラッシュ、および NULL 文字はエスケープされません。 (magic_quotes_gpc = On の場合) |
はい | オフ |
PHP のセキュリティは、デフォルト設定 php.ini-dist に「Magic Quote」と呼ばれる magic_quotes_gpc = On が含まれているという事実にあります。これは、PHP 初心者にとって非常に便利です。「ただし、SQL インジェクションは...