物議を醸す REGISTER_GLOBALS の詳細: その危険性の詳細
PHP 開発に慣れていない人にとって、REGISTER_GLOBALS は無害な設定のように見えるかもしれません。しかし、PHP 開発者はこれを正当な理由から軽蔑しています。
REGISTER_GLOBALS とは何ですか?
REGISTER_GLOBALS を使用すると、PHP スクリプトで GET または POST 経由で受信したデータのグローバル変数を自動的に作成できます。
なぜそんなに嫌われているのですか?
REGISTER_GLOBALS の主な問題は、変数をグローバルに無差別に変換することにあります。 PHP は、宣言されていない変数へのアクセスをエラーとはみなさず、代わりに警告として扱います。これにより、セキュリティ脆弱性の温床が作成される可能性があります。
次のコード スニペットを考えてみましょう:
<code class="php">// $debug = true; if ($debug) { echo "query: $query\n"; }</code>
REGISTER_GLOBALS が有効になっていない場合、宣言されていない $query 変数にアクセスすると、警告がトリガーされます。ただし、REGISTER_GLOBALS がアクティブな場合、$query という名前のグローバル変数がサイレントに作成され、データベース クエリやユーザー入力などの潜在的に機密情報へのアクセスが許可されます。
低品質コードに対する迫り来る脅威
REGISTER_GLOBALS には本質的に問題はありませんが、不適切に記述された PHP コードに存在する脆弱性が増幅されます。多くの PHP スクリプトには堅牢なエラー処理と変数検証が欠けており、悪意のある攻撃者がこれらの脆弱性を悪用する道が開かれています。
結論:
REGISTER_GLOBALS はアプローチする必要がある設定です。細心の注意を払って。これは重大なセキュリティ リスクをもたらし、健全なコーディング慣行に従わない PHP スクリプトに混乱を招きます。 REGISTER_GLOBALS を非アクティブ化することは、安全で保守可能な PHP アプリケーションを作成するための重要なステップです。
以上がPHP で REGISTER_GLOBALS がセキュリティ リスクとみなされるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。