2010-11-18 3 views
0

MVC 2を使用してクイズサイトを開発したいと考えています。 1ページには1つの質問のみが表示されます。 受験者は回答を選択または入力し、[次へ]ボタンを押して続行します。2つの連続した要求の間の経過時間の計算方法は?

サーバ側の私のビジネスロジックは、2回の連続したページ要求の間に経過した時間を記録します。信頼できる診断レポートを作成するために、これらのタイムスタンプを改ざんしてはなりません。

これを処理する最善の方法は何ですか?

答えて

1

私は実際に経過時間を記録しません。時間自体を記録します(UTCで)。あなたはそれを非常に簡単にページ間の時間にすることができますが、他の方法で行くことはできません。後で特定のセッションを調べて、発生したときにフィルタリングすると便利です(たとえば、特定の時間に問題が発生していると主張している場合は、実際にシステムにいるかどうかを確認できます)。

ユーザーのセッションを追跡するために必要なのは、セッション/ユーザー識別子です。現在の時刻のみを記録することができます。このタイミングは、サーバーのシステムクロックとデータベース自体の耐タンパー性になります。

0

セッションを記録し、セッションに保存します。したがって、クライアントデータを改ざんする手段はありません。

1

サーバー上でセッション状態を使用できます。しかし、ユーザーが複数のタブ/ブラウザなどを開いた場合に何が起こるか考える必要があります。

また、エンコードされたタイムスタンプをクライアントに送信することもできます。それらはエンコードされているので、それらを変更することはできません。

+0

ユーザーは、セッションクッキーを(故意にまたは意図せずに)削除するだけで、診断カウントを捨てることもできます。 – Levi

+0

@Leviなぜクライアントに丸められたエンコードされたタイムスタンプがおそらく最善で、ユーザごとに複数のタブ/セッションがサポートされるのかがわかります。 – marcind

+0

シナリオが「どのような手段でも改ざんされてはいけません」という場合、これを使ってクライアントを信頼することは本当に良い考えではありません。クライアントは、新しい値を偽造したり、古い値を再生したり、契約を破棄したり(フィールドなしでフォームを送信するなど)、任意の数の操作を実行できます。 – Levi

関連する問題