ホームページ > バックエンド開発 > PHPチュートリアル > Register_globals は PHP セキュリティにおいて敵ですか?

Register_globals は PHP セキュリティにおいて敵ですか?

Patricia Arquette
リリース: 2024-11-21 08:11:09
オリジナル
812 人が閲覧しました

Is Register_globals a Friend or Foe in PHP Security?

PHP の Register_globals の謎を解明する

かつて謎に包まれていた PHP 設定である Register_globals は、スクリプトの機能に大きな影響を与えます。この記事では、その内部の仕組みを明らかにし、関連する概念について説明します。

Register_globals とは何ですか?

register_globals ディレクティブは、$_REQUEST スーパーグローバル配列の内容をスクリプトのグローバルにシームレスに統合します。範囲。その結果、入力フィールドはスクリプト内で事前定義された変数として適切に表示されます。

たとえば、ユーザー名フィールドを含むフォーム送信では、スクリプトに $username 変数が与えられます。ただし、この便利さには代償が伴います。register_globals はセキュリティとコーディングの悪夢を招きます。

Register_globals の落とし穴の図解

次のコードを考えてみましょう:

if (user_is_admin($user)) {
    $authorized = true;
}

if ($authorized) {
    // Grant unbridled power!
}
ログイン後にコピー

register_globals が有効になっていると、悪意のあるユーザーが URL を悪用する可能性があります脆弱性。スクリプトの URL に「?authorized=1」を追加するだけで不正アクセスが許可されます。

Register_globals と Global キーワードの区別

register_globals とは対照的に、global キーワードは動作します。はっきりと。これにより、他の場所で宣言された特定の変数にローカル スコープ内でアクセスできるようになります。

例:

$foo = 'bar';

baz();

function baz() {
    echo $foo; // Triggers an error: undefined variable
}

buzz();

function buzz() {
    global $foo; // Grants access to $foo within this scope

    echo $foo; // Outputs "bar"
}
ログイン後にコピー

結論

register_globals により開発が促進されます。 、そのセキュリティへの影響は、認識されている利点を大幅に上回ります。堅牢で安全な PHP アプリケーションを確保するには、その機能を理解し、適切なコーディング方法を採用することが最も重要です。逆に、global キーワードは、指定されたスコープ内でグローバル変数を操作するための、対象を絞った制御されたアプローチを提供します。

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

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