我正在用Javascript实现一个简单的游戏,并且我有兴趣拥有一个在线高分榜,因此玩家可以互相竞争.我对此有两个担忧:
确保高分很难获得.我的意思是,仅仅确保它来自您的页面是不够的,因为如果说JavaScript函数是,submitHighScore(n)那么他们总是可以在该页面的地址栏中键入javascript:submitHighScore(10000000)并让它工作.
我想到的可能是某种哈希函数,它可以生成与游戏中某些级别相匹配的特定代码.提交分数时,它也会提交此哈希值,因此用户必须达到此级别才能获得相同的分数.
另一种选择是让游戏提供某种只能暂时工作的密钥,这样当你按下密钥时会改变,然后分数会间歇性地提交给中央服务器.
请记住,真正确定的个人总是可以跟踪发送到您的数据并对其进行反编译的数据.
你可以去Broderbund路线,并询问玩家方面经过验证的玩家琐事问题以确保他们确实通过了他们所说的水平......类似"上一级怪物的颜色是什么?"
1.) 任何可以与数据库通信并理解 JSON 或您选择的其他格式的 CGI 脚本都可以完成这项工作。
但是,如果您熟悉 Django,那么在 Django 之上构建服务器将是最简单的,因为您需要学习什么以及需要编写多少应用程序代码。如果您从头开始编写,看似简单的 CGI 脚本可能会变得相当复杂。
我发现django-piston是一个方便的 Django 应用程序,可以快速编写 REST 风格的 API 服务器。它支持 JSON,因此应该很容易与 JavaScript 游戏交互。
2.) 最随意的破解者会进行重放攻击及其变体:查看页面源代码并执行 JavaScript 函数,拦截 HTTP 请求并重新发送它(使用 Tamper Data 之类的 Firefox 插件应该很容易)。
为了抵消前者,您可以混淆源代码和 HTTP 正文;
可以通过要求所有更新请求包含最近从服务器获取的一次性密码(维基百科文章中的“会话令牌”)来防止后者。
| 归档时间: |
|
| 查看次数: |
3157 次 |
| 最近记录: |