代码之家  ›  专栏  ›  技术社区  ›  Malfist

如何通过两个不能由用户生成的网页传递不可变数据

  •  0
  • Malfist  · 技术社区  · 15 年前

    我有一个Flash应用程序(游戏),它需要将数据传递到一个PHP页面来保存用户和用户的分数。但是,我不希望用户能够自己更改分数,或者在不使用应用程序的情况下初始化分数。

    最好的方法是什么?

    3 回复  |  直到 15 年前
        1
  •  2
  •   Sripathi Krishnan    15 年前

    如果客户机(即flash)跟踪/生成分数,那么您将无法安全地将分数发送到服务器。无论SWF文件可以做什么,攻击者也可以模仿。

    唯一安全的方法是将每个用户的移动或操作发送到服务器。服务器负责游戏的状态并维护分数;客户机只生成移动。

    使用这种方法,攻击者无法操纵分数。他仍然可以绕过你的SWF文件,但要获得高分,他仍然必须做出正确的行动。攻击者可以制作一个机器人来智能地进行移动;以避免您只能通过模糊来使用安全性。

        2
  •  1
  •   MorbZ    15 年前

    实现MD5散列函数并散列分数和用户名。

    然后从flash加载一个php文件,其中score、username和md5 hash作为get参数。PHP文件通过再次散列值来检查数据。

    因为Flash在浏览器中运行,所以可以重新编译,所以您不能100%确定。如果您想完全确定,您必须验证用户对服务器执行的每个步骤。

        3
  •  0
  •   Pace    15 年前

    你有两种服务。一种服务是游戏服务。另一项是得分服务。您需要在计分服务周围设置某种身份验证。然后,游戏服务需要一些凭据来访问此身份验证。

    一种方法是用https包围分数服务,并需要一个https令牌来访问它。然后,您的游戏服务可以将该令牌硬编码到游戏本身的服务器端代码中。