1

ユーザーが自分の名前、姓、電子メール アドレス、その他の情報を入力する Web ページにフォームがあります。次に、PHP はこの情報をチェックして、悪意のある文字や奇妙な文字が存在するかどうかを確認し、ユーザーの電子メールが既に存在するかどうかを確認し、その他の一般的な機能を確認します。ただし、この質問は悪意のあるユーザーの入力に関するものではありません。

$_SESSION後のページでいくつかのものに使用しています。

だから私は最近これをやっています:

$_SESSION['info']['first_name'] = $_POST['first_name'];
$_SESSION['info']['last_name'] = $_POST['last_name'];
// this continues for many lines below...

私はこれをしたい:

$_SESSION['info'] = array_values($_POST);

これに危険はありますか?誰かが大量のデータを $_POST すると、サーバーのメモリに保存されることを知っています。虐待の可能性はありますか?にデータを格納するために使用した元の方法よりも多くのコードを記述せずに、これを防ぐにはどうすればよい$_SESSIONですか? これに役立つメソッドまたは関数はありますか?

明確にするために、私の意図は、セキュリティを犠牲にすることなくコード行を削減することです。

4

2 に答える 2

4

を使用するよりも危険では$_POSTありませんが、オリジナルと同じ効果が必要な場合は、 をドロップしてそれarray_valuesに割り当てる必要$_POSTがあります。

個人的には、保存するキーのリストを定義し、次のように使用します。

$allowed_keys = ["first_name","last_name", /* ... */ ];
$_SESSION['info'] = array_intersect_key($_POST,array_flip($allowed_keys));

しかし、実際には、誰かが大量の POST データをスパム送信し、単純にセッション ファイルに保存するのを防ぐためです。

于 2013-07-11T19:36:03.623 に答える
0

唯一のリスクは、セッション ストレージ (ディスク、メモリ、データベース) が $_POST に渡されたデータで完全にいっぱいになり、DoS で終了する可能性があることです。

于 2013-07-11T19:39:49.580 に答える