ホームページ  >  記事  >  バックエンド開発  >  PHPマジッククオートの詳しい解説_PHPチュートリアル

PHPマジッククオートの詳しい解説_PHPチュートリアル

WBOY
WBOYオリジナル
2016-07-13 17:41:151685ブラウズ

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 の場合)
はい オフ
, 上の表から、Magic_quotes_runtime の場合、プログラム内で ini_set (Magic_quotes_runtime, 0) を使用すると、それをオフにして、独自のメソッドを使用してデータベースまたはファイルからのデータを処理できることがわかります。
しかし、外部から送信されるグローバル変数を扱うのはさらに面倒です。次のコードはここでブロックされ、MySql データベースへの送信には引用符などの前にバックスラッシュ () が付けられるだけです。
functionquo​​tesOuterVars($var) {
if(is_array($var)) {
returnarray_map(quotesOuterVars,$var);
}else{
if(get_magic_quotes_gpc()) {
// if magic_quotes_sybase=Onまずこれを次のように置き換えてから、ラッシュを追加します if(ini_get(magic_quotes_sybase)) {
{
,,,,,、



http://www.bkjia.com/PHPjc/486162.html

www.bkjia.com

tru​​e

http://www.bkjia.com/PHPjc/486162.html
技術記事

PHP のセキュリティは、デフォルト設定 php.ini-dist に「Magic Quote」と呼ばれる magic_quotes_gpc = On が含まれているという事実にあります。これは、PHP 初心者にとって非常に便利です。「ただし、SQL インジェクションは...

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。