2012-06-18 36 views
0

我已经在HTML5中构建了一个游戏,并且Web表单向服务器发布了数据。验证客户端的真实性

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

这种体系结构是否容易受到攻击,客户端可以修改,从而发布流氓值而不是计算得分?

我该如何防止这种情况发生?

+0

感谢您的答案,但我仍然有一个关于这个疑问。假设修改后的客户端向服务器发布数据如下(它是一种速度打字测试游戏)。如果他执行了POST并发布了完整的分数,并且将输入的文本张贴为正确的段落。我怎样才能防止这一点? – user1016313

回答

3

为了保持简短 - 您需要完成所有的验证服务器端。有使用客户端脚本来让事情看起来不错,但你不能从客户端相信任何没有问题。

以Stackoverflow为例。当你投票时,它立即被计算在客户端(保持事情的快捷),但一旦提交,它就会被服务器正确验证。

例如,如果我试图给予好评我自己的答案服务器具有以下JSON拒绝它:

{"Success":false,"Warning":false,"NewScore":0,"Message":"You can't vote for your own post.","Refresh":false} 

即使JavaScript的愉快提交它。

因此您还需要计算您的游戏得分服务器端

0

不要信任用户输入,尤其是在您将数据发送到服务器时可能会执行SQL注入的表单。 (也How can I prevent SQL injection in PHP?见)

尝试验证尽可能多的数据可能服务器端。

看到你也可以使用JavaScript的注意JavaScript注入(http://www.testingsecurity.com/how-to-test/injection-vulnerabilities/Javascript-Injection),因为它们可以注入变为乌尔脚本(如分值)

+1

您需要验证所有服务器端(不是尽可能)。 –

+0

尽可能多的imo,但并非每件事都可以验证。在大多数检查某些标准 – Gooey

+0

检查的标准是*验证* **不** *验证*。请参阅[这里差(http://www.matthewedmondson.info/2010/08/difference-between-validation-and.html) –