WordPress 中有很多实用的钩子(Hooks),wp_headers 挂钩可用于修改 WordPress 的 HTTP 标头。使用此挂钩可将安全标头添加到网站响应 HTTP 标头里。另外还可以将字体、Logo图片等每页都需加载的资源添加到预加载列表中提升速度。
wp_headers 挂钩
示范代码:
function zhanzhangb_headers(){
$headers['content-security-policy'] = 'upgrade-insecure-requests';
$headers['strict-transport-security'] = 'max-age=63072000; includeSubDomains; preload';
$headers['X-Content-Type-Options'] = 'nosniff';
$headers['X-XSS-Protection'] = '1; mode=block';
$headers['x-frame-options'] = 'SAMEORIGIN';
$headers['Referrer-Policy'] = 'strict-origin-when-cross-origin';
$headers['Link'] = '; rel=preconnect; crossorigin';
$headers['Link'] = '; rel=preload; as=image';
$headers['Link'] = '; rel=preload; as=image';
return $headers;
}
add_filter( 'wp_headers', 'zhanzhangb_headers', 100 );
上述代码添加到当前主题的functions.php文件中,或使用代码片段插件。
代码详解
Content-Security-Policy
(CSP) **upgrade-insecure-requests
**指令指示客户端将该站点的所有不安全 URL(通过 HTTP 提供的 URL)视为已被替换为安全 URL(通过 HTTPS 提供的 URL)。
Strict-Transport-Security
(通常简称为 HSTS)响应标头用来通知浏览器应该只通过 HTTPS 访问该站点,并且以后使用 HTTP 访问该站点的所有尝试都应自动重定向到 HTTPS。
X-Content-Type-Options: nosniff
最初是由微软在 IE 8 浏览器中引入的,提供给网站管理员用作禁用内容嗅探的手段,内容嗅探技术可能会把不可执行的 MIME 类型转变为可执行的 MIME 类型。在此之后,其他浏览器也相继引入了这个消息头,尽管它们的 MIME 嗅探算法没有那么有侵略性。
X-XSS-Protection: 1;mode=block
在检测到 XSS 攻击时阻止页面加载。
X-Frame-Options HTTP
响应头是用来给浏览器指示允许一个页面可否在、、、
中展现的标记,如果设置为 SAMEORIGIN
,那么页面就可以在同域名页面的 frame 中嵌套。
Referrer-Policy: strict-origin-when-cross-origin
对于同源的请求,会发送完整的 URL 作为引用地址;在同等安全级别的情况下,发送文件的源作为引用地址 (HTTPS->HTTPS);在降级的情况下不发送此首部 (HTTPS->HTTP)。
Link: ; rel=preload; as=image
注意替换URL为实际地址,一般可以将顶部的LOGO或首屏需要加载的图片添加到预加载列表,从而提高网页性能与 LCP 得分。