PHP では、 register_globals は $_REQUEST スーパーグローバル配列から変数を自動的に登録する内部設定でした。ただし、セキュリティ上の理由から、デフォルトでは無効になっていました。
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 サイトの他の関連記事を参照してください。