在客户端保护数据的技术

时间:2012-12-02 00:01:43

标签: javascript html ruby-on-rails security

我正在构建一个Ruby on Rails应用程序,需要一些适度繁重的处理。为了扩展应用程序,我试图卸载浏览器上的处理。这是一个用户必须回答问题的游戏。当需要验证答案时,需要进行适度繁重的处理。为了验证答案是否正确,客户端需要存储答案,或者至少能够从服务器请求答案,但在某些客户端javascript需要将用户的答案与正确答案进行比较。为了防止作弊,我需要在客户端找到正确的答案吗?

我尝试过的事情

  1. 我尝试散列答案数据并将其嵌入HTML中,但不幸的是我需要访问未散列的答案数据,因为它的值在处理过程中使用。
  2. 我尝试使用AJAX从服务器请求答案数据,但我可以使用许多工具来检查JSON响应并查看返回的答案数据。
  3. 认为我没有尝试过

    1. 如果我使用SSL加密并在需要时请求答案数据怎么办?这不会阻止用户查看自加密后返回的JSON数据吗?对不起,如果我完全不喜欢这个,我是网络开发新手,还在学习。
    2. 是否还有其他技术可以使用我正在使用的技术在客户端保护数据?或者至少使用户尽可能难以查看答案数据的技术?

      非常感谢您的智慧!

1 个答案:

答案 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(这就是为什么你应该对所有人进行服务器端检查应该是有效的答案)。

相关问题