1

私は最近、jQuery の AJAX 関数を使用する投票/賛成票機能を持つ Web サイトを作成しました。問題は、誰でも投票できることです。訪問者がログインする必要はありません。訪問者の IP を追跡することも、長期の Cookie を保存することもありません。通常 (笑わないでください)、ユーザーが何かに投票すると、投票した項目の ID を JavaScript 配列に保存します。ユーザーが投票しようとするたびに、スクリプトは ID の配列をチェックして、特定のアイテムに最近投票したかどうかをチェックします。持っている場合は、警告ダイアログが表示されます。それ以外の場合は、投票します。したがって、ユーザーが再度投票するために必要なことは、ページを更新することだけであることは言うまでもありません。

(URL バーまたは Web コンソールに) JavaScript を挿入するとどうなるかを確認することにしました。

for (var i = 0; i < 100; i++) { vote(itemID); }

(そしてそれはいいことです)。配列が停止しない理由はわかりませんが、それは問題ではありません。これを悪用するのは常に簡単ですよね?つまり、私の Web サイトの投票ページを何度でも呼び出す JS を使用して、小さな HTML ドキュメントを作成することもできます。

ですので、無理をせずに直していただきたいです。JavaScript で不変変数を作成することは可能ですか? 定数 (ただし、一度だけ変更できる定数などがあると本当に助かります)? これをある程度修正する最も簡単な方法は、ID 保持配列を半一定に保つことです。削除することはできませんが、追加することはできます。提案、解決策、または説明は大歓迎です。

4

2 に答える 2

4

いいえ、ユーザーがクライアント側のコードをいじって不正行為をしたい場合は、それを行うことができます。これは、ゲームのチート パッチのようなものです。

あなたが今やっていることは、偶発的な重複投票を避けるために非常に合理的です。これで十分でないと感じた場合 (たとえば、投票が本当に重要な場合)、サーバー側で対策を講じる必要があります。IP の追跡や Cookie の設定も機能しません。これは、クライアント側の連携にも依存しています。ユーザーを認証し、データベースに何かを保存して、全員が 1 回だけ投票するようにする必要があります。

于 2012-08-29T03:11:57.323 に答える
2

IPを追跡しない理由がわかりません。IPを追跡すると、IPが以前に同じアイテムに投票したかどうか、またはIPが頻繁に投票したかどうかを確認できます。

もちろん、人々が同じ IP を共有してサイトを閲覧する可能性があることも考慮する必要があります。

于 2012-08-29T03:18:06.713 に答える