2013-06-28 14 views
18

私は、マクロが自由に動作することが許されていれば問題になるサイトを設計しています。javascriptはボタンのクリックをシミュレートできますか?

私は、ボタンクリックからのHTTP要求をシミュレートすることによって作られたマクロを停止する方法を考えましたが、ボタンを単にクリックするjavascriptスクリプトを挿入して、 。

ボタンのクリックをシミュレートすると、ボタンが押され、ボタンのフォームが関連付けられているPHPコードで実行されていることを意味します。

ロジックは私にjavascriptがこれを行うことができますが、私は確かに知りたいと思います、任意の入力をありがとう!

〜アンドリュー

+0

マクロではどういう意味ですか、フォームにJavaScriptコードを注入するのですか?または、これは(これは)(http://blog.creativeitp.com/posts-and-articles/javascript/javascript-injection-form-editing/)あなたが意味するものは –

+0

はい、誰かが自分のサイトに自分のjavascriptを追加した場合、私のサイトのボタンを押してシミュレートします。彼らがそれをすることができるかどうかを知りたいです。 – AndrewB

+1

彼らはあなたのページに何かをするためにjavascriptを挿入することができます(httpリクエストの送信を含む)。あなたがそれを避ける方法はありません。 –

答えて

36

ボタンは、常にプログラムでクリックすることができます。たとえば、あなたがこのような形で、いくつかのページを持っていることがあります。デバッグcosoleを開いて入力するだけで可能であるよりも

<form> 
    <input type="text" /> 
    <button>Do something</button> 
    <input type="submit"> 
</form> 

document.getElementsByTagName('button')[0].click(); 
ボタンをクリックします

、または

document.getElementsByTagName('input')[1].click(); 

フォームの送信ボタンをクリックするか、

document.forms[0].submit(); 

ボタンをクリックせずにフォームを送信する。

クライアントでJavaScriptコードをマスターできないようにする方法はありません。不要なユーザーの操作を防ぐために、サーバー側でいくつかの検証を追加する必要があります。

+1

簡潔な答えをありがとう! – AndrewB

+0

ええ、素晴らしい答え。 – Yster

2

あなたがすることができる唯一のことは、サーバー上の要求を検証しています。

ページをクライアントに渡すと、そのページの使用方法を技術的に制御することはできません。あなたが例のために何ができるか

from

あなたはjavascriptのゲームを作っていると言います。 AJAXを使用して、プレーヤーのスコアを に送信してログに記録します。スクリプトを見た後、悪意のあるユーザーはAJAXコード を実行して、5,000しか得られなかったとしても1,000,000のスコアを送信することができました。

これはJavaScript側では起こりません。しかし、サーバー側でAJAXリクエストを認証するには何らかの方法が必要ですが、ハッカーが保障できなかったjavascriptにセキュリティ "トークン"を渡すことができます。

+0

私は、たまに変化するサーバー側の変数を持つことを考えていました。変数はユーザーの入力用の塩で、スコアの例では1000スコアを持ち、sha512暗号化を使用し、その数値をサーバー側変数でソルトしてから、何を期待するかを認識しています。コードが正しい場合はスコアを更新し、そうでない場合はスコアを更新します。 明らかに、これがすべてのPHP側であれば、ボタンをクリックしてスコアを提出するだけで、スコアを変更することはできません。しかし、私は自分のスコアを提出することも不可能であることを望んでいます(この場合) – AndrewB

+0

私はここではあまりにも期待していると思いますが、CAPTCHASで和解する必要があります。私は後で努力のために親指を与えるでしょう! – AndrewB

+0

私はモバイルアプリケーションを使いこなすと、データ転送を暗号化して安全にするためにsshライブラリを利用することがあります。おそらく、あなたのケースに似たようなことができるでしょう... –