HTTP Security Headers安全标头是网站安全的重要组成部分,它可以保护您免受不同类型的攻击,包括XSS、SQL注入、点击劫持等。
当从Web浏览器访问任何网站时,浏览器会从该网站的Web服务器请求该网站,然后Web服务器使用HTTP响应头进行响应。这些标头包含元数据、状态错误代码、缓存规则等。它还告诉您的浏览器在处理您网站的内容时如何表现。
当您使用网络并与网站交互时,您的浏览器会存储其信息。这些HTTP Security Headers安全标头将帮助通信并提高网络安全性。
1. HTTP 严格传输安全 (HSTS)
标头指示用户代理仅使用HTTPs连接,并且它也由Strict-Transport-Security声明。这将阻止Web浏览器通过非HTTPS连接访问Web服务器。目前所有主要的网络浏览器都支持HTTP严格传输安全。
通过HTTP访问您的网站时,浏览器会忽略Strict-Transport-Security标头。这是因为攻击者可能会拦截HTTP连接并注入或删除标头。
您还可以通过在/etc/nginx/sites-enabled/example.conf文件中添加以下条目在Nginx中实现HSTS:
add_header Strict-Transport-Security 'max-age=31536000; includeSubDomains; preload';
保存文件,然后重新启动Nginx以实现更改。
注意:如果要将这些头文件应用到特定文件,请在位置块(Nginx)或filesMatch块(Apache)中的Headerset行中添加add_header行。
2. 内容安全政策(CSP)
Content-Security-Policy标头是X-XSS-Protection标头的改进版本,提供了额外的安全层。非常强大的头部旨在防止XSS和数据注入攻击。CSP指示浏览器加载允许在网站上加载的内容。目前所有主要浏览器都提供对内容安全策略的全部或部分支持。
您还可以通过在/etc/nginx/sites-enabled/example.conf文件中添加以下条目在Nginx中实现CSP:
add_header Content-Security-Policy "default-src 'self'; font-src *;img-src * data:; script-src *; style-src *";
保存文件,然后重新启动Nginx以实现更改。
注意:如果要将这些头文件应用到特定文件,请在位置块(Nginx)或filesMatch块(Apache)中的Headerset行中添加add_header行。
3. X-XSS-保护
X-XSS也称为跨站点脚本头,用于防御跨站点脚本攻击。XSS过滤器在现代Web浏览器(例如Chrome、IE和Safari)中默认启用。当页面检测到反射的跨站点脚本(XSS)攻击时,此标头会阻止页面加载。
您可以根据具体需要使用三个选项来实施XSS保护。
- X-XSS-Protection:0:这将完全禁用过滤器。
- X-XSS-Protection:1:这将启用过滤器,但只会清理潜在的恶意脚本。
- X-XSS-Protection: 1; mode=block:这将启用过滤器并完全阻止页面。
要在Nginx中启用X-XSS-Protection标头,请在Nginx Web服务器默认配置文件/etc/nginx/nginx.conf中添加以下行:
add_header X-XSS-Protection "1; mode=block";
接下来,重新启动Nginx服务以应用更改。
注意:如果要将这些头文件应用到特定文件,请在位置块(Nginx)或filesMatch块(Apache)中的Headerset行中添加add_header行。
4. X-Frame-Options
X-Frame-Options标头用于通过禁用您网站上的iframe来保护您的网站免受点击劫持攻击。目前,所有主要的网络浏览器都支持它。使用此标头,您可以告诉浏览器不要将您的网页嵌入到frame/iframe中。
X-Frame-Options的配置方式有以下三种:
- DENY:这将完全禁用iframe功能。
- SAMEORIGIN:iframe只能由同源的人使用。
- ALLOW-FROM:这将允许仅从特定URL将页面放入iframe。
要在Nginx中启用X-Frame-Options标头,请在NginxWeb服务器默认配置文件/etc/nginx/sites-enabled/example.conf中添加以下行:
add_header X-Frame-Options "SAMEORIGIN";
接下来,重新启动 Nginx 服务以应用更改。
注意:如果要将这些头文件应用到特定文件,请在 location 块(Nginx)或 filesMatch 块(Apache)中的 Header set 行中添加 add_header 行。
5. X-Content-Type-Options
x-content-type标头也称为“浏览器嗅探保护”,以告诉浏览器遵循标头中指示的MIME类型。它用于防止网络浏览器(例如InternetExplorer和GoogleChrome)从声明的Content-Type中嗅探响应。nosniff标头并不能保护所有与嗅探相关的漏洞。除了nosniff之外,此标头也没有有效值。
要在Nginx中添加X-Frame-Options标头,请在NginxWeb服务器默认配置文件/etc/nginx/sites-enabled/webdock中添加以下行
add_header X-Content-Type-Options nosniff;
接下来,重新启动Nginx服务以应用更改。
注意:如果要将这些头文件应用到特定文件,请在位置块(Nginx)或filesMatch块(Apache)中的Headerset行中添加add_header行。
6. Referrer-Policy政策
Referrer-Policy是一个安全标头字段,用于标识请求当前网页的网页地址。通过检查引用者,新网页可以看到请求的来源。Referrer-Policy可以配置为使浏览器不通知目标站点任何URL信息。
要在Nginx中添加Referrer-Policy标头,请在NginxWeb服务器默认配置文件/etc/nginx/sites-enabled/example中添加以下行:
add_header Referrer-Policy "strict-origin";
接下来,重新启动 Nginx 服务以应用更改。
注意:如果要将这些头文件应用到特定文件,请在位置块 (Nginx) 或 filesMatch 块 (Apache) 中的 Header set 行中添加 add_header 行。
7. Permissions-Policy政策
Permissions-Policy 是一个新标头,允许站点控制可以在浏览器中使用哪些 API 或功能。
要在 Nginx 中添加 Referrer-Policy 标头,请在 Nginx Web 服务器默认配置文件 /etc/nginx/sites-enabled/example 中添加以下行:
add_header Permissions-Policy "geolocation=(),midi=(),sync-xhr=(),microphone=(),camera=(),magnetometer=(),gyroscope=(),fullscreen=(self),payment= ()";
接下来,重新启动 Nginx 服务以应用更改。
注意:根据您的网站需要更改权限,此处显示的值只是示例策略,没有实际用例的基础。如果要将这些标头应用于特定文件,请在位置块 (Nginx) 或 filesMatch 块 (Apache) 中的 Header set 行中添加 add_header 行。
测试配置的HTTP Security Headers安全标头
如果想要测试网站是否添加已 HTTP 安全标头,可以使用免费的安全标头工具测试您的配置。只需输入您的网站 URL,然后单击“扫描”按钮。
然后它会检查您网站的 HTTP 安全标头,并向您显示报告。该工具会生成一个等级标签,它将显示您的网站发送了哪些 HTTP 安全标头,以及哪些安全标头不包括在内。如果您想设置的安全标头列在那里,那么您就完成了。
注意:如果要取得A,需要将上述所有的 Security Headers安全标头添加到网站。