如何使用libcurl从使用c ++编写的游戏到我服务器上的php页面更安全?

时间:2011-02-26 21:24:46

标签: php c++ libcurl

我使用SDL用c ++编写了一个游戏。如果用户已登录,游戏目前通过curl发布帖子来更新我的游戏站点的高分。我遇到的问题是帖子提供了在我的服务器上收到帖子的php文件的URL,以及帖子使用的变量。昨晚,来自中国的人发现了这个并创建了5个账号,然后向这些用户发布了高得离谱的高分。有什么方法可以让我更安全吗?

ssl会工作吗?我整个上午都在阅读关于ssl的文章,我得到了curl来验证ssl已经安装,但老实说,我甚至不知道从哪里开始让我的php验证页面使用ssl与我的游戏进行通信。我真的很讨厌整个他的核心功能,因为我已经投入了这么多时间。

此时我正在寻找最简单的解决方案,以阻止某人制作表格并将新的自己的论文发布到php页面。

非常感谢任何帮助。

4 个答案:

答案 0 :(得分:1)

您可以通过不仅传递高分,而且传递在PHP端验证的散列版本来添加一小部分安全性。 e.g。

{hs:"2000";hash:'843ed7842a6bd864162022e48b84a668'}

发布到您的PHP脚本,然后检查,

if($hash==md5('secret'.$hs)){
    //UPDATE HighScore
}else{
   //Discard, flag spammer
}

答案 1 :(得分:1)

最快的解决方案是密切关注高分榜,删除看不见的分数,并将已知作弊者列入黑名单。

但是,对于长期解决方案,您是否可以发送一个玩家时间戳“物理输入”(鼠标点击,按键等)以及高分的列表?

然后,服务器可以使用输入执行某些逻辑(甚至可能通过在服务器上运行的游戏客户端运行该输入)来确定高分是否有效。

如果您的游戏使用随机数,您也必须发送初始随机种子。

一旦你设法实现这一点,你也可以相当容易地创建一个重播系统,这将允许玩家彼此分享他们的游戏重放。

答案 2 :(得分:0)

您可以向数据添加salt,只有c ++上的app知道它,服务器
或者你不能?

答案 3 :(得分:0)

SSL本身不足以阻止人们发布高分。我可以想到几种方法开始:

  1. 使用密钥发送代码,密钥用于在将高分数发送到服务器之前对其进行加密。这有一个缺点,有人可以逆向工程你的游戏获得密钥。这可能是好的,如果你不认为有人会经历麻烦。 Crypto++是一个可用于此的C ++加密库。您可能想要使用symmetric-key encryption
  2. 我认为其他一些游戏的作用是使用游戏的某些方面以及原始的高分值,如果不包含游戏状态,则提交的分数无效。