【転載】MozillaのHTML 5ゲームBrowser Questから見たコードホール


by jianguang
声明:カンニングはいいことではありません.私はカンニングを提唱しません.私もMozillaのコード品質を皮肉りたくありません(実際にはコードが最悪です).私はスーパーハッカーではありません.ここで高調を歌いたくありません.ただ、私がMozillaの新しいゲームでどのようにカンニングをしたのかをデモンストレーションしたいだけです.これからHTML 5ゲームを書くときは、これらの問題を避けるように注意してください.私の最初のプログラミングの例はとても簡単です.Bard’s Taleゲームをディスクエディタで編集して私のApple 2 eに保存するために、私は16進法を勉強しなければなりません.
まず、背景を紹介します.この間Mozillaは新しいゲームBrowser Questを発表しました.これはマルチプレイオンラインゲームです.ゲームのルールは複雑ではありません.誰でも試してみることができます.しかし、HTML 5の実装の一例として、これは確かにクールです.
サイトにアクセスし、ユーザー名を入力し、キャラクターを選択し(この機能の実現は少し難しい)、ゲームを開始することができます.
本当にクールなのは、Mozillaがフロントクライアントやバックグラウンドテクノロジーなど、ゲーム全体にソースコードを開放したことです.興味があれば、ここでソースをダウンロードできます.https://github.com/mozilla/BrowserQuest.
研究のために、このゲームをプレイしてみると、すぐにローカルストレージを使っていることに気づきました.Chrome extension(LocalStorage Monitor)を使って、このゲームが本当にローカルストレージを使用しているかどうかを検出した結果、次のことがわかりました.
まず、装備リストがローカルに保存されていることに気づきました.これは、私の装備を勝手に修正できることを意味します.コードを見てみると、装備リストの装備は一定の範囲に限定されており、範囲の大きさは簡単な数字指標で決定されていることがわかりました.自分の装備をトップレベルの装備に変更すると、システムは装備リストをリセットします.
まず、コンソールにデータをコピーします.
copy(localStorage["data"])
これでデータ(JSON文字列)をクリップボードにコピーし、メモ帳に貼り付けて2つの値を編集します.{"hasAlreadyPlayed":true,"player": {"name":"Romana","weapon":"goldensword","armor":"goldenarmor","image":"data:image/png;base64,deleted"},"achievements": {"unlocked": [2,5,11,6],"ratCount":3,"skeletonCount":1,"totalKills":5,"totalDmg"
文字列を取得してコンソールに戻る...localStorage["data"] = (pasted my string here) , — :
改めて、私はMozillaをけなす成果ではないことを再確認します.このゲームは確かにいい例です.ただ、ローカルストレージを忘れないでください.この実現方法はあまりにも安全ではありません.
作者:Raymond Camden
林建光
テキストリンク:http://css.dzone.com/articles/how-i-cheated-mozillas-new
転載先:http://www.webapptrend.com/2012/05/2457.html#comment-988