Покинул форум
Сообщений всего: 32
Дата рег-ции: Янв. 2010
Помог: 0 раз(а)
Добрый вечер. Не надо меня посылать в google, на сайт и сюда. Я поизучал материал, и у меня остались неясности
Как зашитить php-форму (без запроса к БД) от массовых запросов (в плане, чтобы не перезагружали серв попусту).
У меня тут только 1 идея- добавить в скрипт sleep, задержать выплнение к примеру на 1 секунду. Какие способы более грамотные?
E-Pro
Отправлено: 03 Февраля, 2010 - 16:07:50
Частый гость
Покинул форум
Сообщений всего: 164
Дата рег-ции: Окт. 2008 Откуда: Санкт-Петербург
Помог: 0 раз(а)
К примеру можно на сессию/куку вешать сколько времени назад произошел запрос и делать разрешенный интервал в 15 секунд, если он произошел то, отказ.
JustUserR
Отправлено: 03 Февраля, 2010 - 16:35:15
Активный участник
Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009
Помог: 17 раз(а)
E-Pro пишет:
К примеру можно на сессию/куку вешать сколько времени назад произошел запрос
Если кто-то будет писать взломщик данной формы и изучит передаваемые HTTP-запросы для нее - то увидит что хранится в cookie и будет передавать туда что хочет в том числе подделывая время или вообще не передавая сессию
Такая схема будет работать только если на сайте имеемся авторизация и пользователь не может сбросить номер сессии - а то вообще авторизация слетит - кстати в таком случае можно зранить информацию в базе данных
----- Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
gephaest
Отправлено: 03 Февраля, 2010 - 17:06:42
Новичок
Покинул форум
Сообщений всего: 32
Дата рег-ции: Янв. 2010
Помог: 0 раз(а)
Не, пока задача без авторизации. просто форма.
JustUserR
Отправлено: 03 Февраля, 2010 - 18:26:02
Активный участник
Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009
Помог: 17 раз(а)
gephaest пишет:
Не, пока задача без авторизации. просто форма
Суть в том что если для отправки формы авторизация или определенная сессия необязательна - то для взлома элементарно эта сессия не отсылается и вы не можете проконтролировать число обращений
Чтобы такая схема работала необходимо чтобы для возможности получить и отправить форму пользователь минимум обязан продолжать сохранять сессию
----- Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
E-Pro
Отправлено: 03 Февраля, 2010 - 19:10:06
Частый гость
Покинул форум
Сообщений всего: 164
Дата рег-ции: Окт. 2008 Откуда: Санкт-Петербург
Помог: 0 раз(а)
Ну тогда как вариант, брать хэш браузера, ip и сохранять инфу с данными + проверка что чел с браузера торчит.
gephaest
Отправлено: 03 Февраля, 2010 - 19:12:56
Новичок
Покинул форум
Сообщений всего: 32
Дата рег-ции: Янв. 2010
Помог: 0 раз(а)
Ну а если сделать так: записьколва запросов с ип, при достижении N-запросов предлагает отдохнуть или вести каптчу (секс с настройкой рекаптчи)
E-Pro
Отправлено: 03 Февраля, 2010 - 21:46:17
Частый гость
Покинул форум
Сообщений всего: 164
Дата рег-ции: Окт. 2008 Откуда: Санкт-Петербург
Помог: 0 раз(а)
gephaest, почему бы и нет? Но нужно учесть то, что могут быть динамические IP.
То можно, к примеру как:
`date`|`ip`|`count`|`agent`
На следующий день, делать либо очистку, но лучше смену даты и сброс счетчика с агентом.
Мелкий
Отправлено: 03 Февраля, 2010 - 22:33:15
Активный участник
Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009 Откуда: Россия, Санкт-Петербург
Помог: 618 раз(а)
E-Pro пишет:
Но нужно учесть то, что могут быть динамические IP.
Что страшнее - могут быть кучи пользователей за одним NAT'ом.
----- PostgreSQL DBA
E-Pro
Отправлено: 04 Февраля, 2010 - 00:40:42
Частый гость
Покинул форум
Сообщений всего: 164
Дата рег-ции: Окт. 2008 Откуда: Санкт-Петербург
Помог: 0 раз(а)
Мелкий, в этом виноват не я
JustUserR
Отправлено: 04 Февраля, 2010 - 01:34:41
Активный участник
Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009
Помог: 17 раз(а)
E-Pro пишет:
Мелкий, в этом виноват не я
Имелось в виду что бликирование по IP может заблокировать добросовестных пользователей с одного NAT-шлюза - хотя обычно при большом количестве пользователей выделяется пул IP-адресов и при отправке пакетов используется один из пула этих адресов в качестве NAT-шлюза для одного из пользователей Мелкий Но при этом блокировка по IP остается самой надежной - ведь и NAT-шлюза может идти атака поэтому не стоит слишком особенно беспокоиться об его временной блокировке Кстати NAT-шлюз можно вычеслить с помощью сетевых средств - например посмотреть дистанцию прохождения пакета и рассчета TTL оригинального пакета и источника назначения gephaest Использование проверки на браузерность и IP-адреса должно хватить - при этом проверку на браузерность можно делат с помощью JS-скритпа который периодически обменивается данными с сервером или выполняет котнрольные действия - ведь даже если кто-то ради взлома решит написать робота то он вряд ли просто раздобудет JS-виртуальную машину и настроит ее
----- Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
Мелкий
Отправлено: 04 Февраля, 2010 - 10:40:30
Активный участник
Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009 Откуда: Россия, Санкт-Петербург
Помог: 618 раз(а)
JustUserR, не спорю. Просто напоминаю, чтобы люди не забывали, что существуют и серые IP.
----- PostgreSQL DBA
EuGen
Отправлено: 04 Февраля, 2010 - 10:40:47
Профессионал
Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007 Откуда: Berlin
Помог: 707 раз(а)
JustUserR пишет:
TTL оригинального пакета и источника назначения
Это легко подделать (если уж бояться всего и вся)
Для серьезной защиты, думаю, легче применить аппаратные средства ISP (такие как PIX). Но вряд ли у автора есть в этом нужда. Так что защиты просто по IP будет вполне достаточно.
----- Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
gephaest
Отправлено: 04 Февраля, 2010 - 10:41:05
Новичок
Покинул форум
Сообщений всего: 32
Дата рег-ции: Янв. 2010
Помог: 0 раз(а)
JustUserR разве проверку на браузерность нельзя делать посредством php?
Да, и я не силен в js, где почитать о передачи данных клиент-сервер?
JustUserR
Отправлено: 04 Февраля, 2010 - 13:03:46
Активный участник
Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009
Помог: 17 раз(а)
gephaest пишет:
JustUserR разве проверку на браузерность нельзя делать посредством php?
На чистом PHP конечно же нельзя - в самом элементарном примере по CURL-у подделывается User-agent и эмулируется работа cookie (А вместе с ними и сессий) да и многих других вещей
Почему нужно использовать JS - дело в том что эмулятор простейшего взаимодействия с браузером написать легко - это просто набор GET/POST запросов на основе разбора форм да и передачи сохраненных cookie - все это элеметарно делается на CURL/sockets на том же самом PHP или Perl А вот сделать эмуляцию выполняемого JS-кода особенно с современными наворотами и DOM-моделью - это ооочень сложно и это практически дает гарантию браузера
gephaest пишет:
Да, и я не силен в js, где почитать о передачи данных клиент-сервер?
Это и есть передача на основе Iframe или AJAX - ищите по ключевому слову AJAX и найдете много справочников и примеров по этой теме
Мелкий пишет:
JustUserR, не спорю. Просто напоминаю, чтобы люди не забывали, что существуют и серые IP.
Да сейчас у пользователей интернета почти такие и остались - даже если провайдер дает прозрачный внешний адрес то все равно дома у всех стоят роутеры для домашней сети (Даже в один компьютер если подключение ADSL и используются оборудование модем+роутер
EuGen пишет:
Это легко подделать (если уж бояться всего и вся)
Для серьезной защиты, думаю, легче применить аппаратные средства ISP (такие как PIX). Но вряд ли у автора есть в этом нужда. Так что защиты просто по IP будет вполне достаточно.
Это конечно верно - впринципе я согласен что защиты по IP хватит но главное не переусердстовать с ограничениями
----- Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.