2016-06-30 6 views
3

楽しいプロジェクトのために、私は答えが次のレベルへのリンクである一連の謎であるパズルゲームを作っていました、la Notpron。 私はこれをJavascriptで作業していますので、よりインタラクティブな要素を持つことができます。しかし誰もがJSのソースを見てすぐに次のパズルへのリンクを見つけることができます。私のようなもの持っている場合は特に:パズルゲームのためのJavascriptを隠す

window.location.href = "levels/1.html" 

を私は何とかこれを隠すことができればいいだろうが、リンク文字列があるとデコード場所を識別することは非常に容易であろうように、私が見た中で最も難読化ツールは思えますそれ。 Notpronは、URLを次のレベルに手動で入力する手がかりを手に入れることでこれを回避しますが、それから離れていきたいと思います。

私が言ったように、これは単なる楽しみのためのものです。しかし、私の質問は、Web上に隠れたコードを達成する方法があるかどうかです。私は別のツールを使うことにもオープンしています。

+3

を使用することができます示唆されているように複雑さを軽減するためにオフに投げるためのjQueryの機能のいくつかの並べ替えとしてそれを装っことができます。難読化は一般のユーザーにとってはあなたのコードを見るのに苦労しますが、誰も止めるつもりはありません。 – scrappedcola

+0

あなたがしているのは、単純な文字置換の暗号化と復号鍵の使用です。だから誰かがあなたのコードを見ると、gobbligookが見えます。しかし、プログラムが実行されると、解読された文字列が表示されます。 – durbnpoisn

+1

@durbnpoisnそれは難読化のもう一つの層です。ブラウザがそれを見て実行することができれば、ユーザーはそれを見ることができます。 –

答えて

4

JavaScriptだけでは、実際にはありません。さらに、そのレベルで難読化を行うのはちょっと残酷です。

PHP、ASPなどの他の言語を実行するサーバー側スクリプトがある場合、JavaScriptに(AJAXリクエストを介して)ユーザーの「回答」を수수裁判所に提出させることができます。それは正しいです、それは次のものへのリンクを返します。 jQueryを使って

たとえば、:

$.post("/check_answer.php", { riddle: 2, answer: users_answer }) 
    .done(function(response) { 
     if (response== "false") { 
      // display some error message 
     } else { 
      document.location = response; 
     } 
    }); 
0

あなたは答えをチェックし、応答を返送するAJAXとサーバー側の言語を使用することができます。応答は、メッセージに間違っている、または正しいと言い、次のパズルへのリンクを与えることができます。

1

あなたができることは、次の質問のURL(またはURLのパス部分)を前の質問の回答にすることです。したがって、ゲームで前進する唯一の方法は、質問に正しく答えることです。

質問の回答が「google」の場合は、次の質問のURLは次のようになります。http://mypuzzle.com/google

注:私は答えをbase64エンコードします。 'google'は 'Z29vZ2xl'になりますので、URLはhttp://mypuzzle.com/Z29vZ2xl

1

となります。誰かがあなたのコードを閲覧することを100%禁止することはできませんが、クイックビューソースを停止し、 URL。シーザーシンプルシフトはあなたのために文字列を難読化します。あなたはカジュアル一目

function jQuery148951(s, n) { 
    return { 
     val: function() { 
      return s.split("").map(function(char) { 
       return String.fromCharCode(char.charCodeAt(0) + n) 
      }).join("")} 
    } 
} 
... 
>jQuery148951("levels/1.html",-2).val() 
"jctcjq-/,frkj" 
... 
window.location.href = jQuery148951("jctcjq-/,frkj",2).val() 

それともpandavengerはあなたがjsファイルを隠すことができないwindow.atobwindow.bota

>btoa("levels/1.html") 
"bGV2ZWxzLzEuaHRtbA==" 
... 
window.location.href = atob("bGV2ZWxzLzEuaHRtbA==") 
+2

自分自身を書くのではなく、 'window.atob()'と 'window.btoa()'をbase64encodeに使用してみませんか? – pandavenger

+0

良いアイデア、私は編集で追加しました –

関連する問題