Используя PHP и MySQL (или другие средства), как я должен обнаружить оскорбительного посетителя? - PullRequest
2 голосов
/ 15 июня 2009

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

Мой вопрос заключается в реализации такой системы ...

Каким будет хороший способ отслеживать активность данного посетителя? Я предполагаю, что мне придется хранить их IP, так как это единственная информация, которая у меня есть для них. Кроме того, я должен просто сохранить, сколько раз они запрашивали страницы с моего сайта, а затем установить произвольный порог?

Спасибо.

Ответы [ 3 ]

1 голос
/ 15 июня 2009

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

Как только вы определили повторного посетителя, пороговые значения для максимальных посещений в день и т. П. Кажутся хорошими. Или, если вы идентифицируете посетителя без файлов cookie с того же IP-адреса, что и многие другие посетители без файлов cookie, аналогичным образом вы можете захотеть «ограничить» их (ограничение скорости).

0 голосов
/ 15 июня 2009

использовать IP-адрес, строку пользовательского агента, cookie - продлить время, необходимое для отображения страницы, когда к странице часто обращаются с определенной комбинацией IP, пользовательского агента и cookie. Вы можете сделать:

sleep(n)

где n увеличивается в геометрической прогрессии, когда страница запрашивается много раз подряд ...

0 голосов
/ 15 июня 2009

Вы можете сохранить их IP-адрес и строку User Agent в качестве их идентификатора, однако в некоторых общих случаях, таких как большие интрасети, произойдет сбой. Вы можете использовать куки в качестве идентификатора и регистрировать их последний доступ к странице ... тогда вы можете реализовать логику, такую ​​как

if (dateDiff($lastAccessedTime, time()) < 2) {
    // possibly a abusive user ... requesting pages too rapidly!
}

Если у них не включены куки-файлы - это ваше дело.

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