唯物是真 @Scaled_Wurm

プログラミング(主にPython2.7)とか機械学習とか

9leapのゲームは(function(){})();とかで囲んだりしないのかな?

知り合いが9leap : トップページ - どこでも遊べる、投稿型ゲームサイトゲームを公開していたので、プレイしたりバグを探したりバグを探したりして遊んでました。

その中で9leapの仕様がいくつか気になったので書いときます。

変なスコアの登録が簡単にできる

9leapのスコアは以下のようなアドレスにアクセスすれば適当に登録できるみたいですけど、なにか対策しないんですかね?

http://9leap.net/games/番号/result?score=スコア&result=表示文

スコアと表示文と時間とからハッシュ値みたいなのを作って比較するようにすれば、ただアクセスするだけには対策できると思うんですが……。
でもJavaScriptだからソースコードを見れば簡単に対策されて、イタチごっこになるからやらないんですかね?

グローバル変数が弄れる

以下の知り合いのゲームのスクリプトのように、ゲームの作者自身がJavaScriptを(function(){})();的なもので囲んでない場合があります。

http://r.jsgames.jp/games/2114/main.js

こういう場合にはブラウザのJavaScriptコンソールを使ってスクリプトのトップレベルの変数を変更することができます。
対策は、JavaScriptは関数によって変数のスコープが区切られるのでfunctionで囲んでしまえばいいです。

ユーザーがやってくれるとは限らないので、とりあえず9leap側で(function(){})();的なもので囲んでしまえばいいと思うのですが、そう単純なものではないんですかね?

まとめ

9leapの仕様をみて色々とイタズラできそうだなぁと思ったんですが、あまりチート対策とかされていないから、ゲームをプレイしてスコアを競う方はあまりメインじゃないんですかね……。