私はクイズのWebアプリケーションを持っています。クイズのプレーヤーは、各質問に答えるのに20秒与えられ、より速く答えると時間ボーナスが与えられます。
操作が困難/不可能な質問にユーザーが答えるのにかかる時間を記録する方法は何ですか?
スコアが最も高いプレイヤーに賞品が授与される可能性があるため、投稿データを操作するインセンティブがあります。
これは私がこれまでに持っていた唯一のアイデアですが、私には簡単に操作できるようです。
- 質問はAJAX経由で読み込まれます。
- プレーヤーがJavaScriptを介して質問を受信する時間(ミリ秒単位)を保存します。
- 質問ごとにハッシュを割り当て、個々の回答ごとにハッシュを割り当てます。
- プレーヤーが回答を選択したら、質問のハッシュ+回答のハッシュ+ミリ秒単位の合計時間差のハッシュを含む新しいハッシュを作成します。
- そのハッシュをサーバーにPOSTします。
- サーバー側では、正解とその質問の時間の組み合わせについて、考えられるすべての有効なハッシュのキャッシュされたインデックスがあります。(質問ごとに合計20,000ハッシュ。ミリ秒ごとに1つ、最大20秒)
- 提出されたハッシュがインデックスのハッシュと一致する場合、プレーヤーは正解と時間ボーナスを受け取ります。
送信されるハッシュを処理するためだけに暗号化されたFlashファイルを使用することも検討しましたが、間違えない限り、逆コンパイラーを使用して何が起こっているかを確認するのは非常に簡単です。したがって、それ以上のセキュリティは提供されません。
他に何かアイデアはありますか?
編集-私はこれについて非常に考えていたので、ユーザーが時計を変更できることを完全に忘れていたため、このクライアント側を安全に実行する機会がなくなりました。
したがって、サーバー側のタイムスタンプが実際に信頼できる唯一の方法です。