我正在用
Javascript实现一个简单的游戏,并且我有兴趣拥有一个在线高分榜,因此玩家可以互相竞争.我对此有两个担忧:
>为此目的,我需要的最简单的服务器端程序是什么?我不需要一个成熟的“Web应用程序”,只需要一些简单的东西就可以获得高分数的POST请求,更新数据库并发回分数列表.我熟悉Django.你有什么建议?
>如何使highscores表格合理安全?我知道让它对抗有能力和专注的黑客很难,但我不希望任何能够访问Javascript源代码的人能够过于简单地提交虚构的分数.为此目的的任何工具?
解决方法
1.)任何可以与数据库通信并理解JSON或您选择的其他格式的CGI脚本都可以完成这项工作.
但是,如果您熟悉Django,那么在Django之上构建服务器将是最简单的,从您需要学习的内容和您必须编写的应用程序代码的数量来看.如果你从头开始编写,看似简单的CGI脚本会变得相当复杂.
我发现django-piston是一个方便的Django应用程序,可以快速编写REST风格的API服务器.它支持JSON,因此应该很容易与JavaScript游戏进行交互.
2.)最随意的破解者将使用replay attack及其变体:查看页面源并执行JavaScript函数,拦截HTTP请求并重新发送(使用像防篡改数据这样的Firefox附加组件应该很容易).
为了抵消前者,你可以混淆源代码和HTTP体;
>缩小JavaScript代码
>使用Base64或其他编码算法对发送到服务器的消息进行编码
可以通过要求所有更新请求包括最近从服务器获取的一次性密码(Wikipedia article中的“会话令牌”)来防止后者.