web-dev-qa-db-ja.com

JavaScriptはボタンクリックをシミュレートできますか?

マクロを自由に実行できるようにすると問題になるサイトを設計しています。

ボタンクリックからのHTTPリクエストをシミュレートすることによって作成されたマクロを停止する方法を考えましたが、ボタンをクリックするだけのJavaScriptスクリプトを挿入し、通常のユーザーのように処理できる場合、これは無駄になります。

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

ロジックは、javascriptがこれを行うことができることを教えてくれますが、私は確かに知りたいと思います、どんな入力にも感謝します!

〜アンドリュー

27
AndrewB

ボタンは常にプログラムでクリックできます。たとえば、次のようなフォームのページがある場合があります。

<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コードをマスターするのを防ぐ方法はありません。不要なユーザーアクションを防ぐために、サーバー側で検証を追加する必要があります。

48
Vadim

できることは、サーバー上でリクエストを検証することだけです。

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

たとえば、 from でできること:

Javascriptゲームを作成しているとします。 AJAXを使用して、プレーヤーのスコアをログに記録するためにサーバーに送信します。スクリプトを見た後、悪意のあるユーザーは、送信するコードAJAX 5,000しか獲得していなくても、1,000,000のスコア。

Javascript側でこれが発生するのを防ぐことはできません。ただし、サーバー側でAJAXリクエストを認証するには何らかの方法が必要です。ハッカーが把握できないJavaScriptにセキュリティ「トークン」を渡すことができる場合があります。

2
David Karlsson