[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Спам по AJAX запросу.
Страницы: 1, 2
GET
Привет. Есть ли способ обезопасить себя от дерганий сервера по ajax запросу. Пример например вот с городами из Вконтакте:
user posted image
конечно Вконтакте с его серверами справится, но молодорй сервер?

Если написать скрипт который будет генерировать буквы в случайном порядке и грузить списки городов...как думаете, как можно противостоять этому?

Пробывал вводить и счетчик времени, и максимальное количество запросов с открытой страницы...везде какой-то колхоз получается.

_____________
Не тот велик, кто не падал, а тот кто падал и поднимался.
AlmazDelDiablo
ИМХО: грузить все города в JSON и сортировку по букве проводить силами JS на стороне клиента.

_____________
Блог | VK | GitHub | Twitch
Guest
ABC
Google -> Debounce
inpost
У меня была идея кешировать всё.
А.cache
АБ.cache
АБА.cache

в таком духе, получилось бы около несколько десятков тысяч файлов в конце, зато JS не лез бы в базу, а подгружал нужный файл непосредственно с файловой системы из файла, ну а там в каком-нибудь серилизованном формате хранить.

_____________--
Хотя с другой стороны Аякс не такая уж и страшная вещь, если не слишком много и часто приходится выбирать город.

_____________
Обучаю веб-программированию качественно и не дорого: http://school-php.com
Фрилансер, принимаю заказы: PHP, JS, AS (видео-чаты). Писать в ЛС (Личные сообщения на phpforum).
GET
Guest
не то на уровне клиента это не сделать мне нужна защита от вредителя который заменит родную функцию и подделает запрос


_____________
Не тот велик, кто не падал, а тот кто падал и поднимался.
GET
Не Кэш мне не подойдет


_____________
Не тот велик, кто не падал, а тот кто падал и поднимался.
T1grOK
Цитата (ABC @ 12.06.2013 - 10:38)
Guest
не то на уровне клиента это не сделать мне нужна защита от вредителя который заменит родную функцию и подделает запрос

Это фантастика wink.gif Не видел пока ни одного ресурса, который бы устоял против грамотного использования CURL. Тот же VK ограничивает количество запросов в секунду, но это обходится использованием прокси серверов.

_____________
Mysql, Postgresql, Redis, Memcached, Unit Testing, CI, Kohana, Yii, Phalcon, Zend Framework, Joomla, Open Cart, Ymaps, VK Api
Игорь_Vasinsky
а чем клиентская сторона говоришь не устраивает?

_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
GET
T1grOK
Я планировал, может как-то через сессии установить таймер +счетчик для таких запросов внутри xmlhttprequest...
Типа максимум 3 запроса, 300 секунд не пускаем если есть запрос, по истечении обновляем счетчик до 0 и по кругу.
Игорь_Vasinsky
Цитата
а чем клиентская сторона говоришь не устраивает?


можно подделать и js-функцию и тащить запросы...

_____________
Не тот велик, кто не падал, а тот кто падал и поднимался.
GET
Появилась идейка вот такая:
Поставить внутри обработчика:


if(isset($_SESSION['AJAX']))
{
if($_SESSION['AJAX']>3)sleep($_SESSION['AJAX']);
$_SESSION['AJAX']++;
}
else $_SESSION['AJAX']=1;


Т.е. начиная с 4 раза...будет ждать паузы в 4...N секунд. Но не знаю, как сервер к этому отнесется.

_____________
Не тот велик, кто не падал, а тот кто падал и поднимался.
inpost
Это же sleep будет этот запрос, а параллельно ты пошлёшь несколько других запросов.

_____________
Обучаю веб-программированию качественно и не дорого: http://school-php.com
Фрилансер, принимаю заказы: PHP, JS, AS (видео-чаты). Писать в ЛС (Личные сообщения на phpforum).
glock18
Цитата (ABC @ 12.06.2013 - 11:47)
Т.е. начиная с 4 раза...будет ждать паузы в 4...N секунд. Но не знаю, как сервер к этому отнесется.

запросы не будут отпинываться, а будут только плодиться и плодиться. Результат можно предсказать еще худший, чем если ничего не делать, при спаме. rolleyes.gif
GET
inpost
Ну они же привязаны будут к $_SESSION['AJAX']...к сессии юзера

_____________
Не тот велик, кто не падал, а тот кто падал и поднимался.
GET
понятно...я подозревал, что не открыл Америку внезапно

_____________
Не тот велик, кто не падал, а тот кто падал и поднимался.
glock18
Цитата (ABC @ 12.06.2013 - 11:53)
Ну они же привязаны будут к $_SESSION['AJAX']...к сессии юзера


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

Но опять же, защита должна спам запросов от ботов отпинывать (обрывать обработку сразу же, как только становится известно что это дос), а не подвешивать их. Скажем, у вас ограничение кол-во одновременных запросов = 400. Нужно всего-навсего, сохраняя куки, отправлять вам запросы для 400 различных сессий. После 5-7 запросов для каждой сессии, они надежно займут все доступные соединения rolleyes.gif

PS: ну, кстати еще одна проблема - если сессионную переменную будете одну использовать для всех аяксовых обработчиков, то легко может в итоге получиться, что на одной странице есть 3+ аякс-запросов на сервер (подгрузка каких-то списков и тд), что отрицательным образом скажется на user experience.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.