Мне нужно было включить мою apache mod_security, чтобы предотвратить общую c веб-атаку, но в HTTP-запросе, если я не передаю заголовок Content-Type, mod_security не работает.
Например: в HTTP-запросе:
POST / HTTP/1.1
Host: mydomain.or
Content-Length: 604
User-Agent: test
Accept: text/html
Content-type: application/x-www-form-urlencoded
a={"ddados":"1"}&dados=1&a={"ddados":"1"}&dados=1&a={"ddados":"1"}&dados=1&a={"ddados":"1"}&dados=1&a={"ddados":"1"}&dados=1&a={"ddados":"1"}&dados=1&a={"ddados":"1"}&dados=1&a={"ddados":"1"}&dados=1&a={"ddados":"1"}&dados=1&a={"ddados":"1"}&dados=1&a={"ddados":"1"}&dados=1&a={"ddados":"1"}&dados=1&a={"ddados":"1"}&dados=1&a={"ddados":"1"}&dados=1&a={"ddados":"1"}&dados=1&a={"ddados":"1"}&dados=1&a={"ddados":"1"}&dados=1&a={"ddados":"1"}&dados=1&a={"ddados":"1"}&dados=1&a={"ddados":"1"}&dados=1&a={"ddados":"1"}&dados=1&a={"ddados":"1"}&dados=1&a={"ddados":"1"}&dados="'><img src=1 onerror=alert(1)>
Таким образом mod_security блокирует мой запрос (что правильно), но если я удалю заголовок Content-Type.
POST / HTTP/1.1
Host: mydomain.or
Content-Length: 604
User-Agent: test
Accept: text/html
a={"ddados":"1"}&dados=1&a={"ddados":"1"}&dados=1&a={"ddados":"1"}&dados=1&a={"ddados":"1"}&dados=1&a={"ddados":"1"}&dados=1&a={"ddados":"1"}&dados=1&a={"ddados":"1"}&dados=1&a={"ddados":"1"}&dados=1&a={"ddados":"1"}&dados=1&a={"ddados":"1"}&dados=1&a={"ddados":"1"}&dados=1&a={"ddados":"1"}&dados=1&a={"ddados":"1"}&dados=1&a={"ddados":"1"}&dados=1&a={"ddados":"1"}&dados=1&a={"ddados":"1"}&dados=1&a={"ddados":"1"}&dados=1&a={"ddados":"1"}&dados=1&a={"ddados":"1"}&dados=1&a={"ddados":"1"}&dados=1&a={"ddados":"1"}&dados=1&a={"ddados":"1"}&dados=1&a={"ddados":"1"}&dados="'><img src=1 onerror=alert(1)>
Запрос не блокируется.
Как я могу решить эту проблему? Есть ли способ заставить mod_security всегда использовать заголовок Content-Type по умолчанию?