我已经在HTML5中构建了一个游戏,并且一个Web表单将数据发布到服务器。
游戏中的分数是使用Javascript计算的,表单将数据发布到服务器。
此架构是否容易受到攻击,客户端可以被修改,以便发布流氓值而不是计算得分?
如何防止这种情况发生?
答案 0 :(得分:3)
为了简短起见 - 您需要执行所有验证服务器端。使用客户端脚本来保持良好的外观没有问题,但是您不能信任客户端的任何内容。
以Stackoverflow为例。当您投票时,它会立即在客户端进行计算(以保持良好和快速)但服务器在提交后会对其进行适当验证。
例如,如果我尝试upvote我自己的答案,服务器使用以下JSON拒绝它:
{"Success":false,"Warning":false,"NewScore":0,"Message":"You can't vote for your own post.","Refresh":false}
即使javascript愉快地提交了它。
因此,您还需要计算游戏分数服务器端。
答案 1 :(得分:0)
不要信任用户输入,尤其是在您向服务器发送数据时可能会执行SQL注入的表单。 (另见How can I prevent SQL injection in PHP?)
尝试尽可能多地验证服务器端的数据。
看到你也使用javascript注意javascript注入(http://www.testingsecurity.com/how-to-test/injection-vulnerabilities/Javascript-Injection),因为他们可以将更改注入你的脚本(例如得分值)