У меня есть сервер 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?