Настройка WAF + ALB для предотвращения внедрения SQL
Я пытаюсь настроить Amazon ALB (Application Load Balancer, а не "классический" ELB) для использования брандмауэра веб-приложений (WAF) для отклонения запросов https, которые содержат потенциальные полезные нагрузки XSS или SQL-инъекций.
Я настроил в WAF правило XSS
- Тело содержит угрозу межсайтового скриптинга.
- Строка запроса содержит угрозу межсайтового скриптинга после декодирования в виде URL.
и правило SQL-инъекции
- Тело содержит угрозу внедрения SQL.
- Строка запроса содержит угрозу внедрения SQL после декодирования в виде URL.
Когда я просматриваю форму входа в веб-приложение за ALB и отправляю имя пользователя
<script>danger</script>
ALB перехватывает запрос, как ожидается, и возвращает статус HTTP 403.
Тем не менее, когда я отправляю имя пользователя
Robert'); DROP TABLE students;--
В веб-приложении я получаю сообщение об ошибке, в котором указано неверное имя пользователя и пароль, а не ожидаемый HTTP 403.
Почему правило XSS может работать эффективно, в то время как аналогично созданное правило SQL-инъекции не останавливает ввод, который является классическим примером SQL-инъекции? Нужно ли устанавливать это правило по-другому? Любые известные проблемы применения WAF к ALB (я знаю, что интеграция очень новая, поэтому я предполагаю, что могут быть некоторые ошибки).