2011-10-29 16 views
2

フォームがあるとします。そして、あなたが絶対に必要でない限り、あなたは醜いキャプチャを望んでいません。新しいユーザーからのリクエストかどうかを確認

あなたはユーザーにフォームを送信させ、同じユーザーがフォームを再び送信した場合は、キャプチャなどを表示します。

第2フォーム提出が同じユーザーから来たものかどうかを検出できますか?

私は約$_SERVER['REMOTE_ATTR'](これはユーザーIP)について知っていますが、これは信頼できますか?この変数にはユーザーが送信した値が格納されているので、どんなボットでもそれを偽造することができますね。

+0

なぜセッション/クッキーを使用しないのですか?特定の人物やブラウザの「検出」は、ブラウザが送信したデータを使用して、常に本質的に欠陥があります。 –

+3

'$ _SERVER ['REMOTE_ATTR']'はブラウザから送信されません。これは、WebサーバーがHTTPパケットをアドレス指定するアドレスです。残念なことに、多くのユーザーがNAT経由で1つのIPアドレスの背後に隠れることがあるため(他の欠点もあるため)、識別子として機能しません。あなたはセッションクッキーに固執する必要があります。 –

+0

@haloこれが答えになるはずです。 –

答えて

1

2つのルートに行くことができます。ローリングcsrfトークンを使用するか、セッションにフラグを格納することができます。セッションフラグは少し真っ直ぐです:

session_start(); 
if(!isset($_SESSION['submit_flag'])){ 
    $_SESSION['submit_flag']=true 
    //perform action... 
} 
関連する問題