通过html5 javascript在客户端加密数据

时间:2011-08-03 16:36:42

标签: javascript html5 cryptography

我在html5中构建一个web应用程序..基本上是一个带有时间计数器和问题和答案的表单 我正在寻找一种方法,用户无法通过浏览器调试器等改变分数(根据回答问题的时间计算)。
加密原始数据听起来像一个选项..但当数据在dom时,用户可以更改它 我在服务器端添加了一些“时间检查”..但我仍然更喜欢一些客户端保护 有什么建议?感谢

4 个答案:

答案 0 :(得分:3)

我不是网络专家,但我会说只是坚持服务器端的所有验证。根据我所知道的人们利用MMORPG,总有办法访问/更改客户端数据。

答案 1 :(得分:1)

你所要求的是不可能的。无论您如何实现它,用户都可以使用调试工具来改变代码在浏览器中的运行方式 - 或者最终只是自己生成HTTP POST请求,而不依赖于您的代码。

答案 2 :(得分:0)

好吧,既然你说你正在使用html5,为什么不直接使用存储支持呢? e.g:

var store = sessionStorage.question= new Array();
store[0]="10s";
store[1]="5s";

现在只需以编程方式设置!它将持续整个会议 把它放在一个文件中并导入它,优秀的用户不会知道在哪里看! 您还可以查看This Link以获得更强大的解决方案

答案 3 :(得分:0)

正如尼克所说,确定的用户将能够绕过您在客户端计算机上使用的任何加密方案。至多你可以让他们很难打破。你需要做两件事,1)加密以使篡改变得困难; 2)尝试检测确实发生的任何篡改。

我不知道Javascript的现成品是什么,如果可用,则使用AES进行加密,使用HMAC来检测篡改。如果你必须自己编写,那么使用RC4进行加密(不像AES那么强,但代码更简单)和校验和来检测篡改。

您可以做的一件事是让攻击者更难找到您的加密密钥和HMAC密钥,而不是将它们存储在一个地方。有两个数组,使真正的键是array1 XOR array2。这样,实际的密钥在任何地方都没有明确地显示在代码中。