Наткнулся на любопытную заметку по защите от sql-инъекций при помощи nginx. Ниже привожу оригинал текста.
Итак, наверняка все знают о sql-инъекциях и все знаю как не приятно
когда злоумышленник пользуется этим. Я нашёл самое простое решение
избавления от sql-инъекций при помощи фильтрации запросов в nginx.
SQL-инъекции — встраивание вредоносного кода в запросы к
базе данных — наиболее опасный вид атак. С использованием SQL-инъекций
злоумышленник может не только получить закрытую информацию из базы
данных, но и, при определенных условиях, внести туда изменения.
Все мы знаем, что для того что-бы вытащить хоть что-то из БД
необходимо подобрать таблицы, а для этого как правило выполняют команду
вида:
script.php?bug=-1+UNION+SELECT+1,2,3,4,5
в этом коде фигурируют команды union и select,
select – одна из самых значимых команд в mysql, соответственно что-бы
обезопасить себя нам необходимо блокировать все запросы от клиента с
этой командой. Делается это очень легко, в виртуальном хосте nginx`a
прописываем:
if ($request_uri ~* «SELECT») {
return 401;
}
и всё, если клиент попытается подставить эту
команду то в ответ он получит ошибку 401. Таким же способом можно
заблокировать и остальные нежелательные команды. Удачи.
|