ホームページ  >  記事  >  バックエンド開発  >  PHP の register_globals ディレクティブはセキュリティ リスクですか?

PHP の register_globals ディレクティブはセキュリティ リスクですか?

Patricia Arquette
Patricia Arquetteオリジナル
2024-11-15 09:06:03474ブラウズ

Is PHP's register_globals Directive a Security Risk?

PHP の Register_Globals について

PHP の register_globals ディレクティブは、その性質と機能について疑問を引き起こします。詳しく見てみましょう:

Register_Globals とは何ですか?

Register_globals は、$_REQUEST 配列内の要素からグローバル変数を自動的に作成する構成設定です。フォームを送信するとき、入力フィールドの「name」属性に対応する名前を持つ変数に PHP スクリプトでアクセスできます。

たとえば、 register_globals が有効で、フォームがユーザー名フィールドを送信すると、式 ($username = == $_POST['username']) は true と評価されます。

セキュリティへの影響

Register_globals は、悪意のあるユーザーが適切に変数を操作せずに変数を操作できるため、重大なセキュリティ リスクを引き起こします。検証。たとえば、URL に「?authorized=1」を追加すると、攻撃者は認証チェックをバイパスする可能性があります。

グローバル キーワードの区別

register_globals とは異なり、グローバル キーワードでは次のことが可能です。関数のスコープ外で宣言され、関数内でアクセスされる変数。グローバル変数は、使用する前に global キーワードを使用して明示的に宣言する必要があります。

たとえば、次のコードは、グローバル $foo を使用して、buzz() 関数の外で宣言された変数にアクセスします。

$foo = 'bar';

baz();

function baz()
{
    echo $foo; // PHP warns about using an uninitialized variable
}

buzz();

function buzz()
{
    global $foo; // Enables use of $foo in this scope
    echo $foo; // Prints 'bar' to screen
}

以上がPHP の register_globals ディレクティブはセキュリティ リスクですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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