2012-02-22 7 views
3

メンバーエリアのユーザーが固有のIPの数を5〜6程度に抑える方法について、ガイド/チュートリアルの方法で私を指摘できますか?サイトiの多くのユーザーが、数十人から数百人の他のユーザーとのユーザー名の共有を管理するのに役立つようです。または、誰かがこれに対して何らかのセキュリティを実装する方法を説明することはできますか?複数のIPを持つアカウントを共有できないようにユーザーをブロックしますか?

+6

人間の問題に対する技術的解決策はありません。 AIは人間の愚かさにはマッチしません。 –

+3

sacracsmを省略した場合の最後の内容は次のようになります。人間1人からIPアドレス5人、IPアドレス5人から5人の人間を区別することはできません。スマートフォンの時代には、1日に20種類のIPがあまり普及していません。 –

+1

あなたは*本当に*必要な動作を実装する必要があります。これは複数のIPとは関係ありません。 –

答えて

5

IPブロッキングは方法ではありません。

同じ企業のファイアウォール内に多数のユーザーがいるとします。彼らがネットを閲覧すると、プロキシサーバーのためにすべてのIPアドレスが同じIPアドレスを持つように見えます。プロキシサーバーは、要求/応答が適切な人に確実に届くようにする責任があります。

だから、うまくいきません。

あなたができることは、セッションへのログインを結び、以前のセッションを蹴飛ばすことです。基本的に:。

  1. ログイン要求が入ってき
  2. Serverは、そのリクエストにセッションIDを割り当て、そのユーザテーブルのローカルに保存し、それをクッキーにそれを送り返します。
  3. その後の各要求で、セッションIDが検証されて、依然としてユーザーと関連付けられているかどうかが確認されます。そうでない場合は、それらをログインページに追い出す。

ユーザーボブはログインしてセッションID 10を取得します。ボブはサイトの閲覧を開始し、すべてがA-OKです。

次に、Sueが(Bobの資格情報を使用して)ログインします。これにより、セッションID 22がbobアカウントに割り当てられます。彼女はサイトの閲覧を開始します。

Bobが発行する非常に次のリクエストは、revalidated ..が取得され、サーバーはセッション10がもはやBobに関連付けられていないとみなします。 Boom:ログイン画面が表示されます。

ボブは頭を傷つけている間に再びログインします。これにより、新しいID:30が割り当てられます。Sueの次のリクエストは彼女のをログインページにキックします。喜びが続く。

ちょうどキックのために、特定の期間(2分など)に同じアカウントにセッションIDが割り当てられている場合、そのアカウントがハッキングされている可能性のあるメールアドレスにメッセージを送信します。電子メールのリンクをクリックして、アカウントが良好であることを再確認するよう依頼しながら、アカウントを停止することさえあります。パスワードを変更するようにしてください。

2つのことが起こります。まず、いくつかのユーザーは不平を言うだろう(何人かの人々は不平を言うことはない)。あなたが保護している方法について、素晴らしい、しかし確かな応答を持っていることを確かめてください。この新しいセキュリティ機能。それにぶつからないでください。

もう1つのことは、これらの匿名ユーザーはすべて自分のアカウントを取得する(または離れる)ことです。その理由は、ちょうど彼らがパスワードを共有することは良いことではないので、サイトから追い出されているということです。それは、私が正しく理解しているなら、望ましい行動です。


興味深いことに、これはGoToMeetingのようないくつかの企業と同様の設計です。ユーザーアカウントが現在会議をホストしていて、そのアカウントが別の場所にログインしている場合、元の会議は終了します。かなり効果的。

+1

+1「Hilarity ensues。」 –

+2

これはまさに私が提案しようとしていたものです。セッションIDをログインアカウントに結びつける必要があります。毎回dbをチェックしなくて済むようにするには、誰かがログインしたときに最後にログインしたセッションファイルがまだ存在するかどうかをチェックし、そうであればそれを削除します(セッションを基本的なもの再ログインを強制するための削除は安全です)。 – dqhendricks

+0

@dqhendricks:それはまた良い解決策です。 – NotMe

2

私は、userId、使用されているIPアドレス、およびIPが見られた日付を格納するデータベーステーブルを作成します。このような何か:

Table IP 

Id UserId IP  Date 
------------------------------- 
0 42  192.168.1.3 2-21-12:01:32:00 

あなたのPHPで、現在の日に問題のユーザーが持つIPの数。 5以上の場合、ユーザーをブロックします。

ちょうど投稿された回答の一部を読んでいても、私はChris Livelyの回答がより良い解決策であると思います。