前回の記事では「PHPでファイルをアップロードするには?」をご紹介しました。何に注意する必要がありますか? 》ということで、この記事では引き続き、PHPでよく使われる関数の脆弱性とは何かを紹介していきます。一定の参考値があるので、困っている友達が参考になれば幸いです。
PHP で一般的に使用される関数の脆弱性:
抽出変数カバレッジの脆弱性
extract 関数: 変数を配列から現在のシンボル テーブルにインポートします。これは一部の mvc フレームワークで見つかります。
関数定義の抽出: int extract(array,extract_ rules,prefix)
extract0 この関数は次のようになります。各キー名が正当な変数名であるかどうかをチェックし、シンボル テーブル内の既存の変数名と競合するかどうかもチェックします。不正なキー名や競合するキー名の処理は、このパラメータに基づいて決定されます。
extract_rules :
EXTR_ OVERWRITE - デフォルト。競合がある場合、既存の変数は上書きされます。
EXTR_ SKIP - 競合がある場合は、既存の変数を上書きしないでください。
EXTR_ PREFIX. SAME - 競合がある場合は、変数名にプレフィックスを追加します。
EXTR_ PREFIX. ALL - すべてを指定します。変数名 プレフィックス prefix.
EXTR_ PREFIX.INVALID - 不正な変数名または数値変数名のみにプレフィックスを付けます。
##EXTR_ IF.EXISTS - 上書きします。同じ名前の変数の値は、現在のシンボル テーブルにすでに存在する場合にのみ使用されます。その他は加工しておりません。
EXTR_PREFIX_IF _EXISTS - 現在のシンボル テーブルに同じ名前の変数がすでに存在する場合のみ、プレフィックスを付けて変数名を作成すると、それ以外は何も処理されません。
EXTR_REFS - 変数を参照として抽出します。インポートされた変数は引き続き配列パラメーターの値を参照します。
コードを例として使用して、現在のカバレッジ テーブルに対する抽出関数の影響を示します。
最初にファイルを作成します。たとえば、現在のカバレッジ テーブルの名前を入力し、この変数を出力します。
<?php $name = '好久不见'; echo $name; ?>
コードの結果は次のとおりです。
次に、抽出関数を使用します。そして、現在のカバレッジをサイレントに上書きする配列を定義します 表内の変数は、先ほど書き込んだ「久しぶり」が上書きされることを意味します コードは次のとおりです:
<?php $name = '好久不见'; extract(array('name'=>'再见')); echo $name; ?>
コード結果は次のとおりです。
推奨される学習: 「PHP ビデオ チュートリアル 」
以上がPHP でよく使用される関数の脆弱性は何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。