验证客户端的真实性

时间:2012-06-18 16:42:37

标签: security post client

我已经在HTML5中构建了一个游戏,并且一个Web表单将数据发布到服务器。

游戏中的分数是使用Javascript计算的,表单将数据发布到服务器。

此架构是否容易受到攻击,客户端可以被修改,以便发布流氓值而不是计算得分?

如何防止这种情况发生?

2 个答案:

答案 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),因为他们可以将更改注入你的脚本(例如得分值)