Ваши правила - это правило фазы 1, оно должно быть правилом фазы 4 для просмотра тел ответов.
Фазы следующие :
- Заголовки запроса
- Тело запроса
- Заголовки ответа
- Тело ответа
- Вход
Таким образом, правило фазы 1 имеет доступ только к заголовкам запросов и обрабатывается до того, как тело запроса обрабатывается Apache, и до того, как Apache выполняет запрос, и ответ создается.
Однако, даже если вы переместите это правило в фазу 4, другие правила могут остановить эту фазу. Например, OWASP CRS v2 имеет optional_rules/modsecurity_crs_10_ignore_static.conf file
со следующим правилом:
# HTML
SecRule REQUEST_FILENAME "\.(?:(?:cs|j)s|html?)$" "phase:2,t:none,t:lowercase,setvar:tx.text_file_extension=1,allow:phase,nolog,id:'999005',severity:'6'"
Выполняется на этапе 2 и говорит, что все файлы, оканчивающиеся на .html (а также .js и .css, но, вероятно, здесь менее релевантные), пропускаются (поэтому пропустите оставшуюся часть этапа 2, а также этап 3 и этап 4 - фаза 5 - это особая фаза, которая всегда выполняется). Это будет означать, что ваше правило фазы 4 не выполняется для файлов .html.
Подобные правила используются из соображений производительности, поскольку эти файлы, если они не генерируются динамически, менее рискованны, поэтому нет необходимости запускать полный набор правил для них.
Если вы действительно хотите запустить правила фазы 4, вам нужно отключить это правило, либо 1) не включая этот файл, либо 2), явно исключив это правило с помощью следующей конфигурации:
SecRuleRemoveById 999005
Но тогда вы можете захотеть добавить другое правило, чтобы оно работало для файлов css и js.
И на этой ноте сканирование исходящих тел стоит дорого. Обычно входящие HTTP-запросы невелики (если вы не являетесь сайтом загрузки), но исходящие запросы часто будут большими, поэтому по умолчанию SecResponseBodyAccess
отключено. Вы уверены, что хотите это сделать? Не уверен, что вы пытаетесь достичь, но могут быть более эффективные способы достижения вашей цели (например, с помощью политики безопасности контента).