gpt4 book ai didi

javascript - 从控制台阻止 js 攻击

转载 作者:行者123 更新时间:2023-11-29 15:39:18 25 4
gpt4 key购买 nike

我有一个带有打字测试的网站。用户登录后即可进行测试。在测试结束时,它会发送一个 ajax 并显示结果,包括准确性、每分钟按键、错误按键等。

enter image description here

我注意到有人在我的网站上创建了一个帐户,他总是以每分钟 2000 或更多的 key 得分最高。我发现只有一件事可以做到这一点,那就是ajax。任何人都可以使用这样的新值从控制台面板运行 ajax -

$.ajax({ // this is the main code we have to prevent
type: 'POST',
url: '/typingtest',
//dataType: 'json',
data:{
"corrects":2000,
"incorrects":0,
"netwpm" : 2000,
"FixedMistakes" : 0,
"TotalEntries" : 20000,
"ErrorRate" : 0,
"RawSpeed" : 50000,
"KeySpeed" : 50000,
"CompleteWords" : 2000,
"TotalTime" : 1,
"accuracy" : 200,
"ajaxSubmit" : "ajaxSubmit"
},
success: function(data) {
window.location.href = data;
},
complete: function() {
// Schedule the next request when the current one's complete
}
});

他会得到这个结果——

enter image description here

我尝试使用一些标志变量在 ajax 页面上进行验证。但是用 js 完成的任何事情仍然任何人都可以看到它并轻松调试此过程以更改值。然后他终于可以运行 ajax。

有没有人有任何想法来防止这种事情发生?

最佳答案

在每分钟字数的情况下,我建议:

在开始测试之前,请确保您的服务器端代码知道测试中有多少个单词。最好确保每次都是随机的。

当用户开始测试时向服务器发送请求以获得测试开始时间的时间戳。

在测试期间,计算成功完成了多少个单词。

然后在测试完成后再次发布成功完成的单词数以获得总耗时。与服务器验证完成的单词数与最初给定的原始单词数相同,以确保没有人篡改该数字。

这样,客户就不会跟踪任何无法验证的信息。


准确度比较难验证,但一定要设置一个最大值(200% 的准确度是绝对不可能的!)。


此外,您可以通过混淆来尝试安全性(参见 How can I obfuscate (protect) JavaScript? ),但这不是最安全的方法,因为经验丰富的 JavaScript 开发者仍然可以知道发生了什么。

关于javascript - 从控制台阻止 js 攻击,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22370506/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com