1

私はこれを信じることができません-誰かが私のソーシャルネットワーキングウェブサイトで同じ電子メールを使用して実際に2つのアカウントを作成しましたが、サーバー側とクライアント側の両方の検証チェックがあり、そのようなことが起こらないようにしています。ただし、両方のアカウントの作成で記録された時刻がまったく同じ時刻になるようにしてください。

何らかの理由で、これがフォームや任意のインターフェイスを使用して可能であるかどうかは疑問ですが、これがどのように発生したのかを知りたいと思っています。誰かここに何かアイデアがありますか?

4

7 に答える 7

12

何らかの理由で、これがフォームや任意のインターフェイスを使用して可能であるかどうか疑問に思っていますが、これがどのように発生したのかを知りたいと思っています。誰もがここでアイデアを持っています!

おそらく、正しく追跡しなかったブラウザの二重投稿です。

ソーシャルネットワークで2人が1つのメールアドレスを共有したくない場合は、フィールドにUNIQUE制約を設定しemailます。

二重投稿を回避するには、ページの非表示のコントロールでランダムな文字列を生成し、それを列に保持してこの列を作成しますUNIQUE

于 2009-09-02T11:54:32.730 に答える
7

データベースでこの一意の制約を処理していないためか、DBの電子メール列に一意の制約がある場合は、そのような問題は発生しません。

于 2009-09-02T11:53:32.140 に答える
4

emailusersテーブルのorusername列に一意の制約を設定する必要があります。

于 2009-09-02T11:53:25.150 に答える
3

クライアント側の検証に依存しないでください!これらは情報としての訪問者のためだけのものです。検証がサーバー側で行われることを常に確認してください。

私の推測では、誰かがスクリプトを使用してサイトをサブスクライブし、フォーラムのスパムなどでサイトを埋めるために数十のアカウントを追加するテストを行ったと思います。2つのアカウントを追加するだけで、それがいかに簡単かをテストします。どうやら、それは非常に簡単です。次回、彼らは1000のアカウントを作成し、それを使用してシステムを自動的にスパムで溢れさせる可能性があります。これをすべて取り除くために頑張ってください。

重要なヒントはすでに提供されています:一意の電子メールアドレスと一意のユーザー名を適用します。ただし、誰かがあなたのサイトを購読したばかりの場合は、少なくとも30分はそのIPアドレスからそれ以上のアカウントを作成できないことを確認してください。次に、これらの自動化されたスクリプトを少し煩わしくします。

于 2009-09-02T12:46:43.580 に答える
2

確かに最も可能性の高い理由は、ユーザーがフォームを2回送信したことです。

これを回避する最善の方法は、 postafterpostメソッドの後にリダイレクトを使用することです。

于 2009-09-02T12:03:25.693 に答える
2

どういうわけか二重フォームの投稿を受け取っていて、制約/トランザクション処理が適切に行われていない場合、これを行うのは非常に簡単です。

ダブルフォームの送信(特にjavascriptによってトリガーされた場合)は、サーバーにかなり時間的に近づく可能性があります。アクセスログファイルで二重投稿がないか確認してください。

于 2009-09-02T11:55:38.733 に答える
1

他の投稿の間で、あなたはあなたの答えを持っていると思います。おそらく、データベースのフィールドに固有の制約はなく、誰かが送信ボタンをダブルクリックして二重投稿を表示します。

DB制約を適切に設定することをお勧めします。経験から、通常は、クリックしたらすぐにクライアント側クリック(javascript)の送信ボタンを無効にして、Web上のすべてをダブルクリックしようとするユーザーを防ぐのが最善です。

于 2009-09-02T11:59:00.303 に答える