На днях наши анти-хакеры порадовали: если отправить на наш сайт определенный (и очень длинный) запрос, то в ответ он выдаст всю базу данных вместе с паролями.
Взялся чинить. Надо значит проверять запрос, чтобы эти зловещие параметры были все одновременно, и тогда заблокировать (по одному они почему-то такого эффекта не вызывают).
Сначала пытался писать каскады условий: если есть первый параметр, то проверяем второй; если есть второй... ну и так далее, и в конце должна была ждать директива "заблокировать". Но веб-сервер пояснил мне, что так работать он не собирается.
Ладно, давай со счетчиком. Проверяй первый параметр и если есть - увеличиваем счетчик на 1. Проверяем второй... И в конце проверка - если счетчик равен 5, то блокируем (то есть нашел все параметры).
Не работает. Хоть убей не работает, не блокирует ничего.
Волосы дыбом, мозг кипит - разбираюсь.
В какой-то момент вывел значение счетчика когда он по моим расчетам уже должен быть равен 5. И что я вижу? Счетчик = '0+1+1+1+1+1'. То есть текстовая строка.
Добавил я это извращение в последнее условие - и все заработало.
Галактика спасена.
К чему я это... кто знает как nginx работать с int?