Блокировка пользователя от совместного использования учетной записи с несколькими IP-адресами? - PullRequest
3 голосов
/ 22 февраля 2012

Может ли кто-нибудь указать мне способ руководства / учебного пособия о том, как ограничить количество уникальных IP-адресов, которые может иметь пользователь, примерно до 5-6 для области пользователей. Кажется, что многие пользователи на сайте, которым я помогаю, делятся своими именами пользователей с десятками и сотнями других людей. Или кто-нибудь может объяснить, как я могу реализовать какую-то защиту от этого?

Ответы [ 2 ]

5 голосов
/ 22 февраля 2012

IP-блокировка не подходит.

Рассмотрим группу пользователей внутри одного корпоративного брандмауэра.Когда они просматривают сеть, ВСЕ из них будут иметь одинаковый IP-адрес из-за прокси-сервера.Прокси-сервер отвечает за то, чтобы запросы / ответы доходили до нужных людей.

Итак, это не сработает.

То, что вы можете сделать, это привязать логины к сеансам и удалить их.предыдущие.По сути:

  1. Приходит запрос на вход.
  2. Сервер назначает этому запросу идентификатор сеанса, сохраняет его локально в этой пользовательской таблице и отправляет обратно в файл cookie.
  3. При каждом последующем запросе идентификатор сеанса проверяется, чтобы убедиться, что он все еще связан с пользователем.Если нет, выкиньте их на страницу входа в систему.

Что произойдет, если пользователь Bob войдет в систему и получит идентификатор сеанса 10. Bob начинает просмотр вашего сайта, и все в порядке.

Затем Сью входит в систему (с учетными данными Боба).Это назначает идентификатор сеанса 22 учетной записи bob.Она начинает просматривать сайт.

Самый следующий запрос, который Боб выдает, получает повторную проверку ... и сервер видит, что сеанс 10 больше не связан с Бобом.Boom: вылетело на экран входа в систему.

Боб снова входит в систему, почесывая голову.Это назначает новый идентификатор: 30. Следующий запрос от Сью пинает her на страницу входа.Веселье наступает.

Только для ударов, если несколько идентификаторов сеансов назначены одной и той же учетной записи в течение определенного периода времени (например, 2 минуты), отправьте сообщение на адрес электронной почты в файле, что их учетная запись, возможно, былавзломан.Потенциально можно даже закрыть учетную запись, попросив их подтвердить, нажав ссылку в сообщении электронной почты, что учетная запись исправна.Заставьте их сменить пароль прямо сейчас.

Две вещи произойдут.Во-первых, многие пользователи будут жаловаться (некоторые люди не стыдятся) ... обязательно получите хороший, но твердый ответ о том, как вы защищаете них с помощью этой новой необычной функции безопасности.Не сдвигайтесь с места.

Во-вторых, все эти анонимные пользователи получат свои собственные учетные записи (или уйдут).Причина в том, что выгнание с сайта только потому, что они поделились паролем, не очень хорошая вещь.Что, если я правильно понимаю, является желаемым поведением.


Интересно, что это дизайн похож на то, как работают некоторые компании, такие как GoToMeeting.Если учетная запись пользователя в настоящее время проводит совещание И тогда эта учетная запись входит в систему где-то еще, тогда исходное собрание прекращается.Довольно эффективно.

2 голосов
/ 22 февраля 2012

Что я хотел бы сделать, это создать таблицу базы данных, в которой будут храниться идентификатор пользователя, IP-адрес и дата, когда был просмотрен IP-адрес.Примерно так:

Table IP

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

Затем в своем php посчитайте, сколько IP-адресов у данного пользователя на текущий день.Если их больше 5, заблокируйте пользователя.

Хотя, читая некоторые ответы, которые я только что опубликовал, я бы согласился с ответом Криса Лайвли, поскольку это лучшее решение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...