在一些安全软件扫描过后,会反馈一些报告。如:没有做好X-XSS-Protection,X-Frame-Options的防护措施等等。

解决方法:

请先确保httpd.conf 中:
LoadModule headers_module modules/mod_headers.so
没有被注释。否则下列代码不会起作用。一般情况下该模块是被开启的。

在站点根目录.htaccess中末尾添加:

<IfModule mod_headers.c>
Header set Strict-Transport-Security "max-age=31536000;includeSubDomains"
Header set X-XSS-Protection "1; mode=block"
Header set X-Content-Type-Options nosniff
Header set X-Frame-Options SAMEORIGIN 
Header set Content-Security-Policy "connect-src 'self'"
Header set Referrer-Policy: no-referrer-when-downgrade
Header set Feature-Policy "geolocation 'self'"
Header set Permissions-Policy "microphone=(),camera=()"
</IfModule>

如果设置后提示Strict-Transport-Security无效,可尝试删除env=HTTPS。

需要注意的是,如果调用了外部的资源或者文件,那么上面的配置会阻止调用外部文件。通过浏览器的审查元素(console)的错误提示,可采取下方的相关措施。

X-Frame-Options添加例外:

例如:允许https://media.1pxeye.com/

Header append X-Frame-Options "ALLOW-FROM https://media.1pxeye.com/"

Content-Security-Policy添加例外:

例如:允许*.typekit.net及*.google.com通过

Header set Content-Security-Policy "connect-src 'self' *.typekit.net *.google.com"

…has been blocked by CORS policy: No ‘Access-Control-Allow-Origin’ header is present on…

例如:允许https://*.typekit.net通过

Header set Access-Control-Allow-Origin "https://*.typekit.net"

检验方法:

通过https://securityheaders.com/网站检测。如果成功了,以咱《十分钟课堂》网站为例:得到如下结果:

如果配置后,导致网站抛出500错误,需要逐条分析,看看哪一行写法不符合当前的apache版本。详细的值及相关说明可参阅https://developer.mozilla.org/en-US/