ホームページ  >  記事  >  バックエンド開発  >  マジック クオートが無効になっている場合でも、PHP で POST データが自動エスケープされるのはなぜですか?

マジック クオートが無効になっている場合でも、PHP で POST データが自動エスケープされるのはなぜですか?

DDD
DDDオリジナル
2024-10-28 07:59:02920ブラウズ

Why is POST Data Auto-Escaping in PHP Even When Magic Quotes are Disabled?

マジッククオートが無効になっている PHP の謎の自動エスケープ Post データを明らかにする

PHP で POST データを操作するとき、特にその中でWordPress 環境では、マジック クオートがオフになっているにもかかわらず、予期しない自動エスケープ動作が発生する可能性があります。このややこしい問題は、マジック クォートが無効になっている (get_magic_quotes_gpc() が 0 を返す) にもかかわらず、POST データが自動エスケープされると発生します。

WordPress の影響

詳細問題をさらに深く掘り下げると、WordPress がこの自動エスケープ メカニズムをトリガーする上で重要な役割を果たしていることが明らかになります。アプリケーションの初期化プロセスの一部として WordPress がブートストラップされると、そのコードは PHP のマジック クオートの自然な動作を妨げます。

WordPress には、POST データを含むリクエスト データをインターセプトし、特定の操作を実行する機能が含まれています。一重引用符 (') をエスケープしています。この動作は、php.ini でマジック クオートが無効になっている場合にも当てはまります。

バグの原因

WordPress コードベースを詳しく調べると、報告されたバグが明らかになります。 WordPress Core Trac システム (チケット 18322) の下で。この問題は、リクエスト データの不適切な処理に関連しており、望ましくないエスケープを引き起こします。

解決策

幸いなことに、この自動エスケープを解決するソリューションが利用可能です。ジレンマ。 WordPress Codex では、POST データに対して操作を実行する前に、stripslashes_deep() 関数を使用して POST データを「エスケープ解除」することを推奨しています。この関数を使用すると、WordPress の自動エスケープを効果的にオーバーライドし、元の形式でデータを取得できます。

このソリューションを実装するには、PHP スクリプトに次のコードを追加します。

<code class="php">$_GET       = array_map('stripslashes_deep', $_GET);
$_POST      = array_map('stripslashes_deep', $_POST);
$_COOKIE    = array_map('stripslashes_deep', $_COOKIE);
$_SERVER    = array_map('stripslashes_deep', $_SERVER);
$_REQUEST   = array_map('stripslashes_deep', $_REQUEST);</code>

このコードはすべてのスーパーグローバルからスラッシュを取り除き、PHP でアクセスしたときに POST データが自動的にエスケープされないようにします。

以上がマジック クオートが無効になっている場合でも、PHP で POST データが自動エスケープされるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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