-1

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

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

ETC。; 我该怎么做呢?我的想法是通过 ajax 请求将内容发送到 php 文件,该文件依次解析并写入 csv,但我无法想象如何在不被注意的情况下将数据发送到 php 文件(允许人们输入假分数)。

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

4

2 回答 2

2

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

您可以使用的一种方法是基于时间的加密。这并不能使它万无一失,但是确实使手动伪造变得非常烦人和繁琐。

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

一个示例请求是:

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

tMS中的时间是哪里,name是用户的名字,h是时间和分数的哈希。

这不是完全安全的,但是对于没有能力实时编辑脚本的任何人来说,它都会变得更难伪造。

于 2012-08-24T23:29:47.820 回答
0

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

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

于 2012-08-24T23:19:13.940 回答