我有一个运行Apache + PHP-FPM + FastCGI的Ubuntu 14.04服务器,为用户主页提供服务。 为了安全起见,我在Apache的configuration中启用了:
Header set X-Content-Type-Options: "nosniff" Header set X-Frame-Options: "sameorigin" Header set X-XSS-Protection: "1; mode=block"
AllowOverride FileInfo
已设置,因此用户可以在.htaccess
文件中使用Header
指令进行更多控制(如果需要的话)。 然而,似乎Apache没有兑现当CGI使用PHP( 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
testing,我发现第一个命令(即使是setifempty
或merge
)会添加一个头文件,以便在头文件中看到两个X-Frame-Options
。
那么,这是正确的方式呢? 如果env=SCRIPT_NAME
testing足够了,还是有更好的testing来确定请求是否将由PHP-FPM / FastCGI或Apache本身处理?