首页 > 解决方案 > 我可以生成一个 javascript 文件的哈希值来检查它是否已被客户端编辑过吗?

问题描述

我正在使用https://pavlovia.org在风险选择中进行一些行为经济学实验。该任务要求受试者玩(或不玩)不同的彩票。系统创建在主体浏览器上运行的 javascript 文件。但是,我发现检查和编辑 javascript 非常容易,这将允许恶意主体给自己带来优势(例如,增加彩票支付的可能性)。

如果有人让所有彩票都“中奖”,很容易判断他们作弊,但如果他们将概率提高一点,那就很难了。

除了重写所有内容以使逻辑在服务器端之外,我想知道是否可以在客户端计算 JS 代码的哈希(md5 或 sha)并将其发送回服务器以检查 JS 是否有被编辑。我发现了几篇与在 javascript 中计算哈希相关的帖子,但我不确定文件是否可以计算自己的哈希。

我很欣赏一个老练的用户也可以破解那部分代码(例如,将原始文件复制到另一个名称,然后编辑将哈希指向原始文件的代码,或类似的东西)。但我想知道这种技术是否会成为作弊的另一个障碍。

标签: javascriptsecurityhashanti-cheat

解决方案


用户可以在运行时调试 JS 代码并替换某些变量中的值。即使 JS 散列是可能的,它也不会阻止它。我相信除了在服务器端加入关键逻辑之外别无他法。


推荐阅读