从HTML5游戏BrowserQuest看代码漏洞

声明:作弊并不是什么好事,我不提倡作弊。我也不想讽刺Mozilla的代码质量(实际上其代码糟透了)。我不是超级黑客,也不想在此唱高调。只是想演示一下我在Mozilla新游戏上是如何作弊的,以后大家在编写HTML5游戏时要注意避免这些问题。我的***个编程实例非常简单。为了将Bard’s Tale游戏通过磁盘编辑器进行编辑并存入我的Apple 2e,我不得不学习16进制。

首先,介绍一下背景,前段时间Mozilla发布了一款新游戏Browser Quest。这是一款多人在线游戏。游戏规则并不复杂。任何人都可以一试。但是作为HTML5实现的一个例子,这的确很酷。

进入网站,输入用户名,选择角色(此功能的实现有点难度),然后就可以开始游戏了。

真正酷的是,Mozilla把整个游戏开放了源代码,包括前台客户端和后台技术。如果有兴趣,可以在这里下载源码:https://github.com/mozilla/BrowserQuest。

为了进行研究,我玩了一下这款游戏,马上就意识到它用的是本地存储。我用Chrome extension(LocalStorage Monitor)来检测该游戏是否真的使用本地存储,结果发现:

首先我注意到,装备清单是在本地存储的,这就意味着我可以随便修改我的装备。查看代码后我发现,装备清单中的装备是被限定在一定范围内的,范围的大小由一个简单的数字指标来确定。如果把自己的装备都改成了***装备,那么系统会重置装备清单。

所以,***步就是到控制台复制数据:

copy(localStorage["data"])

这样就把数据(JSON 字符串)复制到了剪切板,然后粘贴到记事本并编辑这两个值:

 
 
 
 
  1. {"hasAlreadyPlayed":true,"player":  
  2. {"name":"Romana","weapon":"goldensword","armor":"goldenarmor","image":"data:image/png;base64,deleted"},"achievements":  
  3. {"unlocked":  
  4. [2,5,11,6],"ratCount":3,"skeletonCount":1,"totalKills":5,"totalDmg"  
  5.  
  6.  

获取字符串并返回控制台……

 
 
 
 
  1. localStorage["data"] = (pasted my string here) 

重新加载页面,瞧—我变成了一个强大威武装备精良的复仇者:

[[76782]]

再次重申,我并不是在些贬低Mozilla的成果。该游戏的确是个很不错的示例。只是别忘了本地存储,这种实现方式太不安全了。

原文链接:http://css.dzone.com/articles/how-i-cheated-mozillas-new

【编辑推荐】

  1. 如何制作HTML 5的iPhone应用程序
  2. HTML 5和CSS3快速制作便签特效
  3. HTML 5 WebDataBase设计离线数据库
  4. HTML 5实现拍照上传应用实现
  5. HTML 5打造桌面应用

网页题目:从HTML5游戏BrowserQuest看代码漏洞
分享网址:http://www.shufengxianlan.com/qtweb/news31/446831.html

网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联