Назад | Перейти на главную страницу

Как разрешить пользователям переопределять параметры X-Frame-Options при использовании Apache + PHP-FPM?

У меня есть сервер Ubuntu 14.04 с Apache + PHP-FPM + FastCGI, обслуживающий домашние страницы пользователей. В целях безопасности я включил в конфигурации Apache:

Header set X-Content-Type-Options: "nosniff"
Header set X-Frame-Options: "sameorigin"
Header set X-XSS-Protection: "1; mode=block"

AllowOverride FileInfo установлен, поэтому пользователи могут использовать Header директивы в .htaccess файлы для большего контроля, если им это нужно. Однако похоже, что Apache не соблюдает это при использовании PHP с CGI (mod_headers не отправляет заголовки, когда файл является PHP), и это даже с Header always, .htaccess Header команды игнорируются для файлов PHP.

Моя следующая мысль заключалась в том, чтобы позволить пользователю изменить свой PHP-код для использования PHP header функция, чтобы они могли установить его в X, и я могу использовать setifempty применить это, только если пользователь этого не сделал. После небольшого эксперимента я обнаружил, что эти записи работают:

Header set X-Frame-Options: "sameorigin" env=!SCRIPT_NAME
Header always setifempty X-Frame-Options: "sameorigin" env=SCRIPT_NAME

Без env тесты, я обнаружил, что первая команда, даже если это была setifempty, или merge, добавит заголовок, чтобы вы увидели два X-Frame-Options в заголовках.

Итак, это правильный способ сделать это? Если env=SCRIPT_NAME достаточно теста, или есть лучший тест для определения того, будет ли запрос обрабатываться PHP-FPM / FastCGI или самим Apache?