Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/394.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript:防止伪造的xhr请求_Javascript_Xmlhttprequest - Fatal编程技术网

Javascript:防止伪造的xhr请求

Javascript:防止伪造的xhr请求,javascript,xmlhttprequest,Javascript,Xmlhttprequest,假设您有一个用JavaScript编写的在线游戏,并且希望在服务器端的数据库中存储一个全球排行榜 当游戏结束时,JavaScript代码必须将分数发送到服务器。问题是,如何防止用户使用虚假分数创建虚假请求 我想到的是以某种方式对score参数进行编码,例如,不要调用/save\u score?score=120,而是执行类似于/save\u score?score=xD7ejc7hekgUDndowOSndhsy的操作。然后当然会混淆进行编码的JavaScript代码 我意识到这不是一个万无一失

假设您有一个用JavaScript编写的在线游戏,并且希望在服务器端的数据库中存储一个全球排行榜

当游戏结束时,JavaScript代码必须将分数发送到服务器。问题是,如何防止用户使用虚假分数创建虚假请求

我想到的是以某种方式对score参数进行编码,例如,不要调用
/save\u score?score=120
,而是执行类似于
/save\u score?score=xD7ejc7hekgUDndowOSndhsy
的操作。然后当然会混淆进行编码的JavaScript代码

我意识到这不是一个万无一失的解决方案。如果有足够的时间,攻击者仍然可以找出如何对参数进行编码


你有没有更好的解决办法?或者至少有一些关于如何实现参数编码的想法,以使其尽可能难以理解?

任何需要防止篡改的操作都必须在服务器上完成,而不是在客户端。服务器应该计算分数,而不是要求客户端发送分数。@Barmar是的,但是由于游戏在客户端上运行,客户端仍然需要向服务器发送信息,以便服务器可以计算分数。所以攻击者可以用这些信息伪造请求。我在一家提供在线桥牌游戏的公司工作。服务器知道每个玩家手中有哪些牌,并将拒绝显示要玩无效牌的消息。你的游戏必须这样构造以防止作弊。客户端只需将用户操作发送到服务器,服务器决定结果以及结果如何影响分数。请注意,这并不能阻止bot模拟用户,但可以防止它伪造结果。