我正在构建一个Ruby on Rails应用程序,需要一些适度繁重的处理。为了扩展应用程序,我试图卸载浏览器上的处理。这是一个用户必须回答问题的游戏。当需要验证答案时,需要进行适度繁重的处理。为了验证答案是否正确,客户端需要存储答案,或者至少能够从服务器请求答案,但在某些客户端javascript需要将用户的答案与正确答案进行比较。为了防止作弊,我需要在客户端找到正确的答案吗?
我尝试过的事情
认为我没有尝试过
是否还有其他技术可以使用我正在使用的技术在客户端保护数据?或者至少使用户尽可能难以查看答案数据的技术?
非常感谢您的智慧!
答案 0 :(得分:0)
这是不可能的。如果您需要未处理的答案数据来处理输入,则此数据必须位于客户端的计算机上,这意味着它已暴露。
让我在一些伪代码中解释一下:
func isValid(myAnswer, superSecureData)
if decode(superSecureData) == myAnswer
return true
return false
攻击者只需要这样做:
print decode(superSecureData)
或者,甚至更好:
return true
当然,这会更安全:
func isValid(myAnswer, superSecureData)
if encode(myAnswer) == superSecureData
return true
return false
但是,正如你所说,你不能散列答案,正如我已经提到的,攻击者仍然可以强制执行一个函数return true
(这就是为什么你应该对所有人进行服务器端检查应该是有效的答案)。