2

私のウェブサイトのユーザーはボタンをクリックできます。もしそうなら、彼らはポイント報酬を獲得します。

このボタンをクリックすると、サーバーに対してAJAX呼び出しが行われ、報酬が提供されます(データベースに保存されます)。

ボタンは「ツイートする」ボタンなので、本当にツイートしてもらいたいです。

私の問題は、ボタンが実際にクリックされていることを確認したいということです。javascriptコードはユーザーに完全に表示されるので、クリックせずにAJAX呼び出しを行うのは簡単だと思います。

だから、私にできることは何ですか?難読化は私の唯一の選択肢ですか、それとも何かを暗号化するか、トークンなどを使用できますか?

それが役立つ場合は、ユーザーがログインし、ページがPHPで提供されます。

ありがとう

4

6 に答える 6

3

基本的にあなたは運が悪いです-誰かがページをダウンロードし、セキュリティトークンを解析してからAJAXリクエストを呼び出す簡単なスクリプトを書くことを妨げる絶対確実な解決策はありません。

サーバーによってレンダリングされ、AJAX呼び出しを介して送信されるデータを追加することによってのみ、ジョブを少し難しくすることができます。

ボタンにCAPTCHA画像を追加することを検討するかもしれません。これにより、ボットがデータを送信できなくなりますが、実際のユーザーの生活が困難になります。

于 2012-11-13T14:50:14.163 に答える
1

基本的に、ユーザーはトークンを複製することもできますが、厳密に言えば、完全な保護ではありません。コードの難読化が役立つ場合があります。プログラムまたは複数の投票を防止したいと思います。ipを記録して複数の投票を防止し、csrfトークンを使用できますが、ユーザーがログインしている場合は、信頼されていると見なされ、操作の場合は削除するだけです。アカウント。

キャプチャを試してみて、投票しているユーザーを特定し、複数投票サーバー側から制限する必要があると思います。

しかし、クリックを偽造することはまだ可能です。

于 2012-11-13T14:53:51.810 に答える
1

CSRFトークンをリクエストに添付して、そのページから現在のセッション内でクリックが実行されたことを確認することをお勧めします。

期限切れのトークンを実装することもできます。セッションで一度設定すると、ユーザーがトークンを要求すると無効になり、完了します。

于 2012-11-13T14:47:25.647 に答える
1

ボタンを特定の時間枠内に1回だけクリックできるようにすることはできますか?これはPHP内で実施でき、かなり安全です。

トークンなどを使用している場合でも、ユーザーはトークンを見つけてスクリプトを直接実行できる可能性があります。本当に安全であるためには、時間検証などのある種のサーバー検証が必要です。

于 2012-11-13T14:48:15.307 に答える
0

1-これらのユーザーはあなたのウェブサイトの登録メンバーのようです。この場合は、id、username、およびその他のリレーショナル列を使用して、データベースにポイントテーブルを作成するだけです。request以前にポイントを取得していない場合は、スクリプトを機能させます(最初にユーザーがログインしていることを確認し、次にユーザーをユーザーdbと照合し、関係が存在する場合はリクエストを拒否し、それ以外の場合はポイントテーブル内で受け入れます) 。

2-未登録のユーザーの場合は、Googleキャプチャを使用して確認します。

于 2012-11-13T14:53:49.313 に答える
0

「キャプチャ」ベースのシステムを実装すると、(1)人間だけがボタンをクリックした(2)ボタンが押されたときにのみクリックされたことが保証されます。

http://jquerybyexample.blogspot.com/2012/04/best-5-jquery-captcha-plugins.html

于 2012-11-13T14:49:14.400 に答える