Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Защита формы

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
gephaest
Отправлено: 03 Февраля, 2010 - 16:04:37
Post Id



Новичок


Покинул форум
Сообщений всего: 32
Дата рег-ции: Янв. 2010  


Помог: 0 раз(а)




Добрый вечер. Не надо меня посылать в google, на сайт и сюда. Я поизучал материал, и у меня остались неясности
Как зашитить php-форму (без запроса к БД) от массовых запросов (в плане, чтобы не перезагружали серв попусту).
У меня тут только 1 идея- добавить в скрипт sleep, задержать выплнение к примеру на 1 секунду. Какие способы более грамотные?
 
 Top
E-Pro
Отправлено: 03 Февраля, 2010 - 16:07:50
Post Id



Частый гость


Покинул форум
Сообщений всего: 164
Дата рег-ции: Окт. 2008  
Откуда: Санкт-Петербург


Помог: 0 раз(а)




К примеру можно на сессию/куку вешать сколько времени назад произошел запрос и делать разрешенный интервал в 15 секунд, если он произошел то, отказ.
 
 Top
JustUserR
Отправлено: 03 Февраля, 2010 - 16:35:15
Post Id



Активный участник


Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009  


Помог: 17 раз(а)




E-Pro пишет:
К примеру можно на сессию/куку вешать сколько времени назад произошел запрос
Если кто-то будет писать взломщик данной формы и изучит передаваемые HTTP-запросы для нее - то увидит что хранится в cookie и будет передавать туда что хочет в том числе подделывая время или вообще не передавая сессию
Такая схема будет работать только если на сайте имеемся авторизация и пользователь не может сбросить номер сессии - а то вообще авторизация слетит - кстати в таком случае можно зранить информацию в базе данных


-----
Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик Улыбка
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
 
 Top
gephaest
Отправлено: 03 Февраля, 2010 - 17:06:42
Post Id



Новичок


Покинул форум
Сообщений всего: 32
Дата рег-ции: Янв. 2010  


Помог: 0 раз(а)




Не, пока задача без авторизации. просто форма.
 
 Top
JustUserR
Отправлено: 03 Февраля, 2010 - 18:26:02
Post Id



Активный участник


Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009  


Помог: 17 раз(а)




gephaest пишет:
Не, пока задача без авторизации. просто форма
Суть в том что если для отправки формы авторизация или определенная сессия необязательна - то для взлома элементарно эта сессия не отсылается и вы не можете проконтролировать число обращений
Чтобы такая схема работала необходимо чтобы для возможности получить и отправить форму пользователь минимум обязан продолжать сохранять сессию


-----
Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик Улыбка
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
 
 Top
E-Pro
Отправлено: 03 Февраля, 2010 - 19:10:06
Post Id



Частый гость


Покинул форум
Сообщений всего: 164
Дата рег-ции: Окт. 2008  
Откуда: Санкт-Петербург


Помог: 0 раз(а)




Ну тогда как вариант, брать хэш браузера, ip и сохранять инфу с данными + проверка что чел с браузера торчит.
 
 Top
gephaest
Отправлено: 03 Февраля, 2010 - 19:12:56
Post Id



Новичок


Покинул форум
Сообщений всего: 32
Дата рег-ции: Янв. 2010  


Помог: 0 раз(а)




Ну а если сделать так: записьколва запросов с ип, при достижении N-запросов предлагает отдохнуть или вести каптчу (секс с настройкой рекаптчи)
 
 Top
E-Pro
Отправлено: 03 Февраля, 2010 - 21:46:17
Post Id



Частый гость


Покинул форум
Сообщений всего: 164
Дата рег-ции: Окт. 2008  
Откуда: Санкт-Петербург


Помог: 0 раз(а)




gephaest, почему бы и нет? Но нужно учесть то, что могут быть динамические IP.
То можно, к примеру как:
`date`|`ip`|`count`|`agent`
На следующий день, делать либо очистку, но лучше смену даты и сброс счетчика с агентом.
 
 Top
Мелкий Супермодератор
Отправлено: 03 Февраля, 2010 - 22:33:15
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




E-Pro пишет:
Но нужно учесть то, что могут быть динамические IP.

Что страшнее - могут быть кучи пользователей за одним NAT'ом.


-----
PostgreSQL DBA
 
 Top
E-Pro
Отправлено: 04 Февраля, 2010 - 00:40:42
Post Id



Частый гость


Покинул форум
Сообщений всего: 164
Дата рег-ции: Окт. 2008  
Откуда: Санкт-Петербург


Помог: 0 раз(а)




Мелкий, в этом виноват не я Радость
 
 Top
JustUserR
Отправлено: 04 Февраля, 2010 - 01:34:41
Post Id



Активный участник


Покинул форум
Сообщений всего: 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/
 
 Top
Мелкий Супермодератор
Отправлено: 04 Февраля, 2010 - 10:40:30
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




JustUserR, не спорю. Просто напоминаю, чтобы люди не забывали, что существуют и серые IP.


-----
PostgreSQL DBA
 
 Top
EuGen Администратор
Отправлено: 04 Февраля, 2010 - 10:40:47
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




JustUserR пишет:
TTL оригинального пакета и источника назначения

Это легко подделать (если уж бояться всего и вся)
Для серьезной защиты, думаю, легче применить аппаратные средства ISP (такие как PIX). Но вряд ли у автора есть в этом нужда. Так что защиты просто по IP будет вполне достаточно.


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
gephaest
Отправлено: 04 Февраля, 2010 - 10:41:05
Post Id



Новичок


Покинул форум
Сообщений всего: 32
Дата рег-ции: Янв. 2010  


Помог: 0 раз(а)




JustUserR разве проверку на браузерность нельзя делать посредством php?
Да, и я не силен в js, где почитать о передачи данных клиент-сервер?
 
 Top
JustUserR
Отправлено: 04 Февраля, 2010 - 13:03:46
Post Id



Активный участник


Покинул форум
Сообщений всего: 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/
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Программирование на PHP »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB