我如何在文件上写两个字并避免数据注入?

时间:2012-08-24 23:07:19

标签: php ajax security code-injection

问题很简单。我制作了一个小型HTML5游戏,因为我的一些朋友非常兴奋,我想建立一个名人堂。这个想法只是一个简单的csv,比如

Name,Points,Date
AAA,15,2012-08-25

等;我该怎么做呢?我的想法是将带有ajax请求的东西发送到一个php文件,后者又解析并写入csv,但我无法想象如何在没有被注意的情况下将数据发送到php文件(允许人们输入假的分数) )。

此外,这必须非常简单,因此,没有node.js等。

2 个答案:

答案 0 :(得分:2)

没有简单的方法可以做到这一点,因为没有服务器端验证,它仍然可以伪造 - 这就是你看到的大多数Flash游戏都有荒谬的高分的原因。

您可以使用的一种方法是基于时间的加密。这并不能让它变得万无一失,但是却让人手动伪装真的很麻烦。

例如,您可以使用MS中的当前时间戳作为密钥来加密分数,并将散列和时间发送到服务器。在服务器端,您可以使用时间作为密钥来解密哈希。如果时间与当前服务器时间相差太远(花时间将分数发送到帐户中),则丢弃分数。

示例请求将是:

page.php?t={timestamp}&name={name}&h={encryptedscore}

t是MS中的时间,name是用户的名称,h是时间和分数的哈希值。

这并不是非常安全,但如果没有能力对脚本进行实时编辑以使其伪造,则会更加困难。

答案 1 :(得分:0)

如果这是一个直接的AJAX呼叫,没有什么可以阻止任何人打开Fiddler并修改这个的http帖子。 只需验证您从客户端收到的输入。确保数字是数字,日期是有效日期。

你甚至使用SQL吗? SQL注入是人们从客户端获取输入并将其直接连接到SQL查询的地方。