ホームページ >バックエンド開発 >PHPチュートリアル >PHP で Register_Globals が危険なのはなぜですか?
PHP の Register_Globals と Global キーワードを理解する
Web アプリケーションを操作する場合、register_globals と PHP の global キーワードの概念を理解することが不可欠です。 PHP.
とはRegister_Globals?
register_globals ディレクティブは、$_REQUEST 配列の要素を変数として自動的に登録します。これは、フォーム経由 (POST または GET 経由) で送信されたデータはすべて、対応する入力フィールドの名前を持つ PHP 変数としてすぐにアクセスできることを意味します。
この機能は最初は便利に思えるかもしれませんが、アプリケーションを次のようなものに公開します。セキュリティの脆弱性。攻撃者は、URL クエリ文字列や送信されたフォーム データを操作して任意の変数を設定し、不正アクセスを取得する可能性があります。したがって、セキュリティ上の理由から register_globals を無効にすることを強くお勧めします。
例:
ログイン フォームでユーザーがユーザー名とパスワードを送信できるシナリオを考えてみましょう。 register_globals を有効にすると、攻撃者は URL に次のコードを追加する可能性があります:
?username=admin&password=secret
これにより、PHP スクリプトに $username 変数と $password 変数が自動的に設定され、攻撃者が認証プロセスをバイパスできるようになります。
グローバル キーワードとは何ですか?
グローバル キーワードには目的が異なり、register_globals とは無関係です。関数の外で定義された変数をその関数内でアクセスまたは変更できるようにします。
例:
$foo = 'bar'; function baz() { echo $foo; // PHP generates a warning as $foo is undefined within this scope } function buzz() { global $foo; // Enables access to the global variable $foo echo $foo; // Prints 'bar' to the screen }
以上がPHP で Register_Globals が危険なのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。