3

特定のコンテンツを簡単に参照できるように、この投稿を段落にまとめます。

  1. ボタンが押されるたびに1の数字をプラスする単純なボタンをHTMLで作成しました。この関数はJavascriptで作成されています。この番号は、20秒ごとにデータベースに入力する必要があります。

  2. Javascriptはクライアント側で実行されているため、すべての訪問者はボタンが押された現在の回数を変更でき、その「偽の」番号が20秒後にデータベースに送信されます。

  3. 不正行為と見なされるため、ユーザーはこの番号を変更できないようにする必要があります。

  4. java、flashなどの他の言語を使用してこれを完了することもできますが、クライアント側で実行されるJavascript/Jqueryで動作するようにする必要があります。これは、ボタンを押すたびにサーバーにリクエストが送信されると、サーバー上で非常に時間がかかるためです。

4つのステップすべてを理解していただければ幸いです。理解していない場合は、どのステップを深めるかをお知らせください。

質問:ユーザーが自分のコンピューターで番号を変更することなく、クライアント側からデータベースに番号を安全に処理する方法を作成するにはどうすればよいですか?できない場合は、他に何か提案はありますか?

前もって感謝します。

4

2 に答える 2

1

まず第一に、あなたのカウンターはあなたのサーバー上にあるべきです。ボタンが押された回数をクライアント側に知らせないでください。これを自分でサーバー(誰もアクセスできない場所)に保存してください。

これは、ユーザーがボタンをクリックするたびにサーバーに通知する必要があることを意味します。さらに、各「クリック」が有効であることを確認する必要があります。これを行うには、ボタンのクリックごとに一意のキーを付加します。ユーザーがボタンをクリックするとすぐに、このキーがサーバーに送信され、検証されます。有効な場合、サーバーはボタンが次にクリックされたときに送信される新しいキーを返します。


ただし、DOM要素のクリックを操作するための短いjQueryスクリプトを作成するのは非常に簡単であることに注意してください。と同じくらい簡単なコマンド

setInterval(function(){
  $('button').trigger('click');
},500);

500ミリ秒(0.5秒)ごとにボタンのクリックイベントをトリガーします。

于 2013-03-26T12:33:59.600 に答える
1

JavaScriptで実行されるコードは、「不正行為」から実質的に保護することはできません。あなたの最善の策はデータを隠すことかもしれません:

var myobj = (function() {
    var i = 0;

    return {
        function setI(newvalue) {
            // do checks here
            if (true) {
                i = newvalue;
            }
        },
        function sendI() {
            // send value of i
        }
    }
}());

myobj.setI(123);
myobj.sendI();
myobj.i // undefined

ただし、データの改ざんを防ぐロジックをサーバーに移動する方が適切です。

于 2013-03-26T12:35:51.890 に答える