人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

PHP4でアンケートフォームから送信されてきた値が正しいのかのチェック方法についての質問です。

ログインしているユーザに、アンケートフォームにランダムで質問一覧を表示し、各項目に対して良いか悪いかの評価を10段階でradioボタンで表示し、送信してもらいます。

しかし、現状ですと別の場所から表示されていない質問に対する評価をPOSTで送ることができてしまいます。なので、POSTで評価を受信した時に、ちゃんと表示されていた質問一覧と全て数とIDが一致すると確認してから、評価をDBに保存したいと考えています。

今の考えでは、表示した質問IDを全てセッション等保存して、送れれてきた質問IDと同じものが送れてきているのかチェックしようかと考えていますが、これでいいのでしょうか? 他に良い方法はありますでしょうか?


ちなみに、HTML_QuickFormを利用して、以下のようなコードを書いています。

PHP:
$radio["$question_id"][] = $form->createElement('radio', NULL, 'とても良い', null, 1);
を10回


HTML:
<input value="1" id="qf_xxxxxx" name="質問ID" type="radio">
を10回

このHTML_QuickFormが吐く idもうまく使えそうな気がするのですが…

●質問者: p_question
●カテゴリ:コンピュータ ウェブ制作
✍キーワード:dB HTML PHP アンケート コード
○ 状態 :終了
└ 回答数 : 1/1件

▽最新の回答へ

1 ● keisukefukuda
●60ポイント

細かい状況がわからないですが、基本的には問題ないと思います。

しかし、セッションに単純に保存すると、ある一人のユーザーが複数の画面で質問ページを表示したときに破綻します。

ですから、複数表示を禁止するか、フォームを一回表示するごとにユニークなIDを割り振って、それをキーとして質問の一覧を保存する必要があるかと思われます。

あと老婆心ですが、質問文からお見受けするにCSRF脆弱性も残っていそうな気配を受けますので、調査して対策されるのがよいと思います。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ