PHP $_REQUEST 配列のセキュリティ リスク_PHP チュートリアル

WBOY
リリース: 2016-07-13 17:10:35
オリジナル
1324 人が閲覧しました

$_REQUEST を使用すると、投稿を直接判断してコードを取得する必要がなくなり、使いやすくなるのは誰でも知っていますが、詳しく考えると、$_REQUEST は怖すぎると感じます。以下の分析を参照してください。

フォーム データを処理するには、PHP の 2 つのスーパーグローバル変数 $_GET と $_POST を使用できることは誰もが知っています。これらの変数は、フォームの送信時にメソッドによって指定されます。さらに、PHP は $_REQUEST 配列も提供します。ただし、$_GET と $_POST のすべてのデータ要素が含まれるだけでなく、スーパーグローバル配列 $_COOKIE のすべてのデータ要素も含まれます。
しかし、考えたことはありますか。これら 3 つの配列のキーが同じである場合、$_REQUEST を使用してどの配列値を取得すればよいでしょうか?何か問題はありますか?
問題を説明するために次のコードを使用します。ここでは $_COOKIE を設定しません。自分で処理してください。

コードは次のとおりですコードをコピー var_dump($_GET['a'],$_POST['a'],$_REQUEST['a']);
?>

デモ

<フォームメソッド= 'post'アクション= 'req.php?a=xxx'>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      




フォームを送信すると、取得するページのコンテンツは次のとおりです:
文字列(3) "xxx" 文字列(3) "yyy" 文字列(3) "yyy"

同じ内容ですが、$_REQUEST で POST の値が GET の値を上書きします。何が起こっているのでしょうか?

実際、これは PHP 設定ファイルで設定されています。php.ini 設定ファイルの 466 行目に次の内容があります。


コードは次のとおりです

コードをコピー; このディレクティブは、PHP が GET、POST、Cookie を登録する順序を記述します。 ; 環境変数と組み込み変数 (それぞれ G、P、C、E、S) ; EGPCS または GPC と呼ばれます) 登録は左から右に行われます ; 値は古い値をオーバーライドします。 variables_order = "EGPCS" $_REQUEST[] には $_POST[] $_GET[] の機能がありますが、$_REQUEST[] の方が遅いです。 post メソッドと get メソッドを通じて送信されたすべてのデータは、$_REQUEST 配列を通じて取得できます




この EGPCS は、$_REQUEST 配列を使用してコンテンツを取得する優先順位を示しています。その文字の意味は次のとおりです。E は $_ENV を表し、G は $_GET を表し、P は $_POST を表し、C は $_COOKIE を表し、S は $_SESSION を表します。デフォルトのデータ書き込み方式は EGPCS であるため、POST に含まれるデータは GET の同じキーワードを使用してデータを上書きします。


http://www.bkjia.com/PHPjc/629664.htmlwww.bkjia.com

tru​​e

技術記事 $_REQUEST を使用すると、投稿を直接判断してコードを取得する必要がなくなり、使いやすくなるのは誰でも知っていますが、詳しく考えてみると、$_REQUEST は怖すぎると感じてしまいます。以下のスコアをチェックしてください...
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!