ホームページ > バックエンド開発 > PHPチュートリアル > PHP で register_globals が無効になったのはなぜですか?

PHP で register_globals が無効になったのはなぜですか?

Linda Hamilton
リリース: 2024-11-15 10:33:02
オリジナル
687 人が閲覧しました

Why Was register_globals Disabled in PHP?

PHP でのグローバルの登録

はじめに

PHP では、 register_globals は $_REQUEST スーパーグローバル配列から変数を自動的に登録する内部設定でした。ただし、セキュリティ上の理由から、デフォルトでは無効になっていました。

Register Globals の例

register_globals が有効になっている場合、POST または GET リクエストからの入力フィールド値は、同じ変数として直接アクセスできます。入力フィールドとして名前を入力します。例:

<form method="post">
  <input type="text" name="username">
  <input type="submit">
</form>
ログイン後にコピー

register_globals が有効な場合、次の PHP コードはスクリプトの先頭で true と評価されます:

$username === $_POST['username'];
ログイン後にコピー

セキュリティの脆弱性

Register_globals が導入されました深刻なセキュリティ上の脆弱性。たとえば、攻撃者は「?authorized=1」などのクエリ文字列パラメータを URL に追加して、認可チェックをバイパスする可能性があります。

グローバル キーワード

register_globals とは異なり、グローバル キーワードには別の目的。関数内の異なるスコープから変数にアクセスするために使用されます。例:

$foo = 'bar';

function baz() {
  // Attempting to use $foo here will trigger a warning
  echo $foo;
}

function buzz() {
  global $foo;  // Declares that $foo is a global variable
  echo $foo;    // Prints 'bar'
}
ログイン後にコピー

結論

register_globals はセキュリティ上のリスクのため使用されなくなりましたが、global キーワードは依然として異なるスコープの変数にアクセスするための便利なツールです。

以上がPHP で register_globals が無効になったのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート