Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/security/4.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
Security 在浏览器游戏中保护http事务_Security_Encryption_Flash_Httprequest - Fatal编程技术网

Security 在浏览器游戏中保护http事务

Security 在浏览器游戏中保护http事务,security,encryption,flash,httprequest,Security,Encryption,Flash,Httprequest,我想建立一个系统,让许多人可以玩基于浏览器的简单(swf或html5)游戏(如蛇、赛车、ludo等)。这些游戏非常简单,不需要在服务器中编写逻辑。 得分最高的人将赢得一些奖品 现在的问题是确保工作流的安全。我的方法可能不正确,请随时提出任何替代方案。 1.游戏开始时,将生成游戏id。 2.比赛结束时,将返回分数和比赛id。 问题是,步骤2可能会被欺骗。任何人都可以发送类似的http请求,带有生成的游戏id和任何分数。我如何知道分数来自我的比赛,而不是直接发送 我曾想过对分数进行加密,但同样,加密

我想建立一个系统,让许多人可以玩基于浏览器的简单(swf或html5)游戏(如蛇、赛车、ludo等)。这些游戏非常简单,不需要在服务器中编写逻辑。 得分最高的人将赢得一些奖品

现在的问题是确保工作流的安全。我的方法可能不正确,请随时提出任何替代方案。
1.游戏开始时,将生成游戏id。
2.比赛结束时,将返回分数和比赛id。

问题是,步骤2可能会被欺骗。任何人都可以发送类似的http请求,带有生成的游戏id和任何分数。我如何知道分数来自我的比赛,而不是直接发送

我曾想过对分数进行加密,但同样,加密机制将在javascript中出现,可以很容易地复制

请帮忙,提前谢谢


<编辑1:我不担心嗅探器,会话劫持,中间人攻击。HTTPS将处理所有这些。我担心用户本身。他可以在浏览器中右键单击>检查并检查发送的请求头。他可以轻松地重播相同的请求头(只需右键单击并在新选项卡中打开)

我想这取决于数据的值,但听起来值很低

选择一个功能上不可能猜测的ID。例如,GUID(128位随机生成的值)。如果有人猜中了,他们就赢了。但从统计上看,他们不可能做对。如果你通过HTTPS发送,那么他们就无法嗅出(我会通过HTTPS发送,只是因为)

如果你想做得更好,你可以选择一个随机密码,但我怀疑数学是否支持这一点。听起来你的数据值太低了。这真的重要吗


FWIW,我担心的更大的事情是,有人决定拒绝你,要求你为根本不存在的游戏存储大量的数据…

你可以添加提交签名/编码层来掩盖数据,JS代码混淆使用户更难撤销该级别的保护

但最终你无法解决问题。您正在信任一个不受信任的客户机以预期的方式运行代码,这自然会产生不稳定的输出。欺骗分数只是一个切入点——攻击者可以轻易地篡改客户端游戏逻辑的其他部分进行欺骗

信任客户机是一个长期存在的安全问题,几乎没有可能的解决方案。对于一个没有人关心的微不足道的高分表,您可以通过大量的模糊处理来避开偶然的攻击者,再加上手动监视和修剪明显欺诈的提交


如果你正在考虑提供真正想要的奖品,你可能需要将游戏的一些重要部分转移到你控制的服务器上。你需要保护哪些棋子,如何保护这些棋子高度依赖于游戏,并且可能存在难以防御的残余攻击。(例如,考虑基于服务器的商业多人游戏试图抵御客户端黑客(如aimbots)的时间长度。)

我不担心嗅探、会话劫持或中间人攻击。我担心用户本身。任何人都可以右键单击>检查元素>并检查请求头(正在发送的表单数据)并重播相同的请求头(通过右键单击并在新选项卡中打开)。通过这种方式,他可以发送分数=1000,而不是发送分数=100。HTTPS将减轻嗅探器和MITM。如果用户提交分数,而您不控制运行时,那么这就是问题所在。你需要清楚什么样的威胁最让你担心。无论您使用何种加密,用户都可以操纵自己的状态。你只是通过任何一种疯狂的方案来模糊数据,从而提高了标准。你可以做一些事情来提高标准,但考虑到目前为止所做的假设,这只是一种混淆。