ホームページ >バックエンド開発 >PHPチュートリアル >REGISTER_GLOBALS が PHP のセキュリティ上の悪夢とみなされているのはなぜですか?
頻繁に PHP 開発を行う人にとって、REGISTER_GLOBALS について言及するだけで、疫病に遭遇したような本能的な反応が引き起こされます。しかし、なぜこの特定の設定に対してこれほど強い嫌悪感があるのでしょうか?
REGISTER_GLOBALS の危険性
REGISTER_GLOBALS を使用すると、GET または POST 経由で渡されるすべての変数をスクリプト内のグローバル変数としてアクセスできるようになります。 。この一見無害な機能には、隠れた脅威が潜んでいます。
PHP で宣言されていない変数にアクセスすると、エラーではなく警告のみがトリガーされます。その結果、これにより、潜行的な脆弱性の温床が作成される可能性があります。
例示的な例
次のコード スニペットを考えてみましょう。
<code class="php"><?php // $debug = true; if ($debug) { echo "query: $query\n"; } ?></code>
If $ query が明示的に宣言されていない場合、上記のコードは "query" という名前の GET または POST 変数の値をエラーなしで出力します。これが直ちに脅威となるわけではありませんが、残念ながら、不適切に作成された PHP コードはよく発生します。
そのようなシナリオでは、REGISTER_GLOBALS によって、意図しない副作用やセキュリティの抜け穴が発生する可能性があり、そうでなければエラーとしてすぐに明らかになる可能性があります。
結論
REGISTER_GLOBALS は本質的に悪意のあるものではありませんが、PHP コードベース内のセキュリティと安定性の問題の重大な原因であることが証明されています。その結果、この悪名高い評判が広まり、開発者はこれをのけ者設定として扱うことに満場一致で同意しました。
以上がREGISTER_GLOBALS が PHP のセキュリティ上の悪夢とみなされているのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。