用于Javascript编写的游戏的服务器端高分

Eli*_*sky 6 javascript django

我正在用Javascript实现一个简单的游戏,并且我有兴趣拥有一个在线高分榜,因此玩家可以互相竞争.我对此有两个担忧:

  1. 为此目的,我需要的最简单的服务器端程序是什么?我不需要一个成熟的"Web应用程序",只需要一些简单的东西就可以获得高分数的POST请求,更新数据库并发回分数列表.我熟悉Django.你有什么建议?
  2. 如何使highscores表合理安全?我知道让它对抗有能力和专注的黑客很难,但我不希望任何能够访问Javascript源代码的人能够过于简单地提交虚构的分数.为此目的的任何工具?

Jor*_*ter 5

确保高分很难获得.我的意思是,仅仅确保它来自您的页面是不够的,因为如果说JavaScript函数是,submitHighScore(n)那么他们总是可以在该页面的地址栏中键入javascript:submitHighScore(10000000)并让它工作.

我想到的可能是某种哈希函数,它可以生成与游戏中某些级别相匹配的特定代码.提交分数时,它也会提交此哈希值,因此用户必须达到此级别才能获得相同的分数.

另一种选择是让游戏提供某种只能暂时工作的密钥,这样当你按下密钥时会改变,然后分数会间歇性地提交给中央服务器.

请记住,真正确定的个人总是可以跟踪发送到您的数据并对其进行反编译的数据.

你可以去Broderbund路线,并询问玩家方面经过验证的玩家琐事问题以确保他们确实通过了他们所说的水平......类似"上一级怪物的颜色是什么?"


ent*_*nto 1

1.) 任何可以与数据库通信并理解 JSON 或您选择的其他格式的 CGI 脚本都可以完成这项工作。

但是,如果您熟悉 Django,那么在 Django 之上构建服务器将是最简单的,因为您需要学习什么以及需要编写多少应用程序代码。如果您从头开始编写,看似简单的 CGI 脚本可能会变得相当复杂。

我发现django-piston是一个方便的 Django 应用程序,可以快速编写 REST 风格的 API 服务器。它支持 JSON,因此应该很容易与 JavaScript 游戏交互。

2.) 最随意的破解者会进行重放攻击及其变体:查看页面源代码并执行 JavaScript 函数,拦截 HTTP 请求并重新发送它(使用 Tamper Data 之类的 Firefox 插件应该很容易)。

为了抵消前者,您可以混淆源代码和 HTTP 正文;

  • 缩小 JavaScript 代码
  • 使用 Base64 或其他编码算法对您发送到服务器的消息进行编码

可以通过要求所有更新请求包含最近从服务器获取的一次性密码(维基百科文章中的“会话令牌”)来防止后者。

  • Base64 不会阻止任何人。这不是加密。哪些数据是 Base64 编码的,并且解码起来很简单。 (3认同)