Eu tenho um servidor Ubuntu 14.04 rodando Apache + PHP-FPM + FastCGI, servindo as home pages dos usuários. Por segurança, eu habilitei na configuração do Apache:
Header set X-Content-Type-Options: "nosniff"
Header set X-Frame-Options: "sameorigin"
Header set X-XSS-Protection: "1; mode=block"
AllowOverride FileInfo
está definido, para que os usuários possam usar Header
diretivas em .htaccess
arquivos para obter mais controle, caso precisem. No entanto, parece que o Apache não honra isso ao usar PHP com CGI ( mod_headers não enviando cabeçalhos quando o arquivo é PHP ), e que, mesmo com Header always
, .htaccess
Header
comandos são ignorados para arquivos PHP.
Meu próximo pensamento foi permitir que o usuário modificasse seu código PHP para usar a função header
do PHP , para que eles possam configurá-lo como X, e eu posso usar setifempty
para aplicar isso somente se o usuário não tiver. Depois de experimentar um pouco, descobri que essas entradas funcionam:
Header set X-Frame-Options: "sameorigin" env=!SCRIPT_NAME
Header always setifempty X-Frame-Options: "sameorigin" env=SCRIPT_NAME
Sem os testes env
, descobri que o primeiro comando, mesmo que fosse setifempty
ou merge
, adicionaria um cabeçalho, para que você pudesse ver dois X-Frame-Options
nos cabeçalhos. / p>
Agora, essa é a maneira correta de fazer isso? Se o env=SCRIPT_NAME
teste for suficiente, ou existe um teste melhor para determinar se o pedido será tratado pelo PHP-FPM / FastCGI ou pelo próprio Apache?