我有一个测验网络应用程序,测验的玩家有 20 秒的时间来回答每个问题,并且会因为回答得更快而获得时间奖励。
有哪些方法可以记录用户回答难以/不可能操作的问题所花费的时间?
可能会有奖励给得分最高的玩家,因此会有操纵帖子数据的动机。
到目前为止,这是我唯一的想法,但对我来说似乎很容易操纵:
- 问题将通过 AJAX 加载。
- 存储玩家通过 JavaScript 接收问题的时间(以毫秒为单位)。
- 为每个问题分配一个哈希值,为每个单独的答案分配一个哈希值。
- 当玩家选择一个答案时,创建一个新的哈希值,其中包含问题的哈希值 + 答案的哈希值 + 总时间差的哈希值(以毫秒为单位)。
- 将该哈希发布到我的服务器。
- 服务器端我将拥有所有可能的有效哈希的缓存索引,用于该问题的正确答案+时间组合。(每个问题总共 20,000 个哈希值。每毫秒一个,最多 20 秒)
- 如果提交的哈希与索引中的一个匹配,则玩家将获得正确答案和他们的时间奖励。
我还考虑过使用加密的 Flash 文件来处理要提交的哈希,但除非我弄错了,否则很容易在这些文件上使用反编译器来查看发生了什么。所以它并没有提供更多的安全性。
有人有其他想法吗?
编辑 - 我一直在考虑这个问题,以至于我完全忘记了用户能够改变他们的时钟,这使得任何安全地做这个客户端的机会都无效。
因此,服务器端时间戳确实是唯一可靠的方法。