Бан на некоторое время на PHP

Статус
В этой теме нельзя размещать новые ответы.

BuzzDD

Постоялец
Регистрация
9 Фев 2009
Сообщения
76
Реакции
5
Ребята, как можно реализовать бан по IP на определённое время и после определённых попыток?
Например, есть URL, но при вводе неправильного адреса странички( попытка взлома,просто ошибся чел и т.д.), нужно чтобы после 2-3 раз его забанило на 5 часов примерно.
Подскажите хоть функции некоторые и алгоритм, хочется самому понять как делается задержка по времени,а не скачать|"содрать" готовый скрипт и смотреть на него:)
 
При каждой попытке авторизации вешаешь куку или заводишь новую сессию. Сесси/куки вместе с IP хранишь в базе (там же хранишь дополнительне параметры: число попыток авторизации и пр). При мягком режиме бана - банишь по сессии или по кукам. При жетском бане - бань по IP.
 
При каждой попытке авторизации вешаешь куку или заводишь новую сессию. Сесси/куки вместе с IP хранишь в базе (там же хранишь дополнительне параметры: число попыток авторизации и пр). При мягком режиме бана - банишь по сессии или по кукам. При жетском бане - бань по IP.
Сессия и куки мне не нужны, хотелось бы понять как чисто по IP блокировать (автоматически) чела за неправильный ввод URL-адреса после второй попытки.
 
C IP все тоже самое. Пишешь в базу айпи и доп данные. Потом при выдаче данных проверяешь чела по IP.

P.S. Или я что-то не так понимаю?
 
C IP все тоже самое. Пишешь в базу айпи и доп данные. Потом при выдаче данных проверяешь чела по IP.

P.S. Или я что-то не так понимаю?

Ну да так и делается, в данном случаи реализовать можно это так:

При не правильном вводе урла, записываем сессию в БД и ищем на схожесть... если есть, то прописываем бан путем записи ип в БД... и делаем проверку на бан по ип при выводе страницы...
 
зачем так все усложнять, прикаждой неудачной попытке авторизации счетчик попыток в куках перещелкиваем на +1 при достижении отметки 5, делаем запись в куки со временем блокировки и выводим сообщение:

Код:
echo "Ваш акк заблокирован на 20 минут";

Потом сравниваем время в куках с текущим временем (текущее - время в куках > 20 пускаем на сайт)
 
Могу предложить такую схему.

1) В htaccess прописывается

Код:
ErrorDocument 401 /ban.php
ErrorDocument 403 /ban.php
ErrorDocument 404 /ban.php
ErrorDocument 500 /ban.php

В результате на скрипт ban.php перенаправляются запросы в случае следующих ошибок:

401 ошибка — Запрос требует аутентификации пользователя (Unautorized).
403 ошибка — Доступ к запрашиваемому ресурсу запрещён (Forbidden).
404 ошибка — Запрашиваемый документ на сервере отсутствует (Not Found).
500 ошибка — Ошибка конфигурации сервера или внешней программы (Internal Server Error).

2) в htaccess создаем секцию

Код:
<Directory>
order allow, deny
allow from all
#marker
deny from 13.13.13.13
</Directory>[CODE]

с помощью этой секции и будет производиться бан путем автоматического добавления новых ip (для вставки в нужном месте строки [I]deny from ...[/I] поставлена уникальная фраза #marker).

3) в файле ban.php реализуем следующий алгоритм:

- определяем ip заблудившегося
- ищем ip в htaccess. Если там его еще нет, то добавляем строку
###deny from 14.14.14.14
диезы поставлены специально, ведь с первого раза не баним.
Если ip уже есть, то убираем один диез:
##deny from 14.14.14.14
Когда все диезы будут удалены, апач запретит посещать сайт с этого ip.

4) Необходимо периодически, например, раз в час, вычищать ip из htaccess. Для этого у строки необходимо заранее ставить метку време, чтобы знать, что пора эту строку удалять.

P.S. Входящие соединения все равно будут отрабатываться. Если паразитный трафик достаточно велик, то лучше организовать бан через firewall.

P.P.S. Предложенный вариант не может рассматриваться как защита от ddos-атак.
 
Как банить по IP и по кукам разобрался, всё легко делается,но лучше поставлю редирект на главную страницу сайта,а то эти " хакеры " начнут издеваться над URL чаще,чем положено:)
jik, с htaccess не знал такого, но тоже возможно попробую.
 
А если они куки постоянно будут чистить то и бана не будет....
 
Поэтому я обычно делаю 20 попыток на IP и 5 попыток на сессию или куку. Притом первая проверка работает независимо от второй.
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху