如何实施安全性HTTP标头以防止漏洞?

您是否知道大多数安全漏洞可以通过在响应标头中实现必要的标头来解决?


安全与您网站的内容和SEO一样重要,并且由于配置错误或缺乏保护,数以千计的网站被黑客入侵。如果您是网站所有者或安全工程师,并且希望保护您的网站免受 点击劫持,代码注入,MIME类型,XSS, 等攻击,那么本指南将为您提供帮助.

在本文中,我将讨论在多个Web服务器,网络边缘中实现的各种HTTP标头 & CDN提供商提供更好的网站保护.

笔记:

  • 建议您在进行更改之前先备份配置文件
  • 某些标题可能并非在所有浏览器中都受支持,因此 检查兼容性 实施之前.
  • 必须在Apache中启用Mod_headers才能实现这些头。确保在httpd.conf文件中未注释以下行.

LoadModule headers_module modules / mod_headers.so

  • 实施后,您可以使用安全标头在线工具来验证结果.

使用WordPress ?: 您可能想尝试使用 HTTP标头插件, 这些负责这些标题以及更多.

X-XSS保护

X-XSS-Protection标头可以防止某种程度的 XSS (跨站点脚本)攻击,并且与IE 8 +,Chrome,Opera和Safari兼容 & 安卓.

Google,Facebook,Github使用此标头,大多数渗透测试咨询公司会要求您实施此标头.

您可以通过四种方法配置此标头.

参数值含义
0XSS过滤器已禁用
1个如果检测到攻击,则启用XSS筛选器并清理页面
1;模式=阻止启用XSS过滤器,并在检测到攻击时阻止呈现页面
1; report = http://example.com/report_URI启用XSS筛选器,并在检测到攻击时报告违规

让我们实施 1;模式=阻止 在以下Web服务器中.

Apache HTTP服务器

在Apache Web服务器的httpd.conf中添加以下条目

标头集X-XSS-Protection "1;模式=阻止"

重新启动apache进行验证

Nginx的

在nginx.conf中的http块下添加以下内容

add_header X-XSS-Protection "1;模式=阻止";

需要重启Nginx才能将其反映在您的网页响应标头上.

最大CDN

如果您正在使用 最大CDN, 然后添加标题就很容易.

转到边缘规则 >> 单击“新规则”,然后从下拉列表中选择“添加X-XSS-Protection标头”.

边缘规则

Microsoft IIS

  • 打开IIS管理器
  • 选择您需要启用标题的站点
  • 转到“ HTTP响应头”。
  • 在操作下单击“添加”
  • 输入名称,值,然后单击确定

iis-x-xss保护

  • 重新启动IIS以查看结果

HTTP严格传输安全

HSTS(HTTP严格传输安全性)标头,以确保来自浏览器的所有通信均通过HTTPS(HTTP安全)发送。这样可以防止HTTPS点击提示,并将HTTP请求重定向到HTTPS.

在实施此标头之前,您必须确保可通过HTTPS访问所有网站页面,否则将被阻止.

浏览器的所有主要最新版本(例如IE,Firefox,Opera,Safari和Chrome)都支持HSTS标头。有三个参数配置.

参数值含义
最大年龄告诉浏览器请求仅通过HTTPS可用的持续时间(以秒为单位).
includeSubDomains该配置也对子域有效.
预载如果您希望将您的域包含在 HSTS预载列表

因此,让我们以配置HSTS一年的示例为例,其中包括域和子域的预加载.

Apache HTTP服务器

您可以通过在httpd.conf文件中添加以下条目来在Apache中实现HSTS。

标头集严格传输安全 "最大年龄= 31536000; includeSubDomains;预载"

重新启动Apache以查看结果

Nginx的

要在Nginx中配置HSTS,请在server(SSL)指令下的nginx.conf中添加下一个条目

add_header Strict-Transport-Security’max-age = 31536000; includeSubDomains;预载’;

和往常一样,您需要重新启动Nginx进行验证

云耀斑

如果您使用的是Cloudflare,则只需单击几下即可启用HSTS.

  • 登录到 云耀斑 然后选择站点
  • 转到“加密”标签,然后单击“启用HSTS”。

cloudflare-hsts-config

选择所需的设置,更改将即时应用.

Microsoft IIS

启动IIS管理器,并通过转到相应站点的“ HTTP响应标头”来添加标头.

IIS

重新启动网站

X框架选项

使用X-Frame-Options标头可以防止 点击劫持 您网站上的漏洞。通过实现此标头,可以指示浏览器不要将您的网页嵌入frame / iframe。这在浏览器支持方面有一些限制,因此您必须在实施之前进行检查.

您可以配置以下三个参数.

参数值含义
SAMEORIGIN内容的框架/ iframe只允许来自同一网站来源.
拒绝阻止任何域使用框架/ iframe嵌入您的内容.
允许只允许在特定URI上框架内容.

让我们看一下如何实施“拒绝”,因此没有域嵌入网页.

阿帕奇

在httpd.conf中添加以下行,然后重新启动Web服务器以验证结果.

标头始终附加X-Frame-Options DENY

Nginx的

在服务器指令/块下的nginx.conf中添加以下内容.

add_header X-Frame-Options“ DENY”;

重新启动以验证结果

F5 LTM

使用以下内容创建一个iRule并将其与相应的虚拟服务器关联.

当HTTP_RESPONSE {

HTTP :: header插入 "X框架选项" "拒绝"

}

您无需重新启动任何操作,更改会立即反映出来.

WordPress的

您也可以通过WordPress实现此标头。在wp-config.php文件中添加以下内容

header(’X-Frame-Options:DENY);

如果您不满意编辑文件,则可以使用此处说明或上面提到的插件.

Microsoft IIS

通过转到相应站点的“ HTTP响应标头”来添加标头.

iis-x-frame-options

重新启动网站以查看结果.

X内容类型选项

避免 哑剧 通过将此标头添加到网页的HTTP响应中来输入安全风险。具有此标头可指示浏览器将文件类型视为已定义,并禁止内容嗅探。您只需添加“ nosniff”一个参数.

让我们看看如何宣传此标题.

阿帕奇

您可以通过在httpd.conf文件中添加以下行来完成此操作

标头集X-Content-Type-Options nosniff

不要忘记重启Apache网络服务器以使配置生效.

Nginx的

在服务器块下的nginx.conf文件中添加以下行.

add_header X-Content-Type-Options nosniff;

和往常一样,您必须重新启动Nginx来检查结果.

Microsoft IIS

打开IIS并转到HTTP响应头

单击添加并输入名称和值

iis-mime类型

单击确定,然后重新启动IIS以验证结果.

HTTP公钥固定

最小化中间人(信息技术部)通过固定证书来攻击风险。这是可能的 HPKP (HTTP公钥固定)标头.

您可以固定根证书公钥或即时证书。在撰写本文时,HPKP当前可在Firefox和Chrome中运行,并支持SHA-256哈希算法.

有四种可能的参数配置.

参数值含义
report-uri =“网址”如果验证失败,请报告到指定的URL。这是可选的.
pin-sha256 =“ sha256key”在此指定图钉
最大年龄=浏览器记住仅使用固定键之一即可访问该网站的时间(以秒为单位).
IncludeSubDomains这也适用于子域.

我们来看看来自facebook.com的HPKP标头示例

仅公开密钥销报告:最大年龄= 500; pin-sha256 ="WoiWRyIOVNa9ihaBciRSC7XHjliYS9VwUGOIud4PB18 ="; pin-sha256 ="r / mIkG3eEpVdm + u / ko / cwxzOMo1bk4TyHIlByibiA5E ="; pin-sha256 ="q4PO2G2cbkZhZ82 + JgmRUyGMoAeozA + BSXVXQWB8XWQ ="; report-uri = http://reports.fb.com/hpkp/

如果您需要在网站上实施此操作,请转到 Scott Helme撰写的实施指南.

内容安全政策

防止XSS,点击劫持, 代码注入 通过在网页HTTP响应中实施内容安全策略(CSP)标头进行攻击. CSP 指示浏览器将允许的内容加载到网站上.

所有 浏览器不支持CSP, 因此您必须在实施之前进行验证。您可以通过三种方法来实现CSP标头.

  1. 内容安全政策–级别2 / 1.0
  2. X-Content-Security-Policy –已弃用
  3. X-Webkit-CSP –已弃用

如果您仍在使用不推荐使用的型号,则可以考虑升级到最新型号.

有多种参数可以实现CSP,您可以参考 OWASP 一个想法。但是,让我们看一下两个最常用的参数.

参数值含义
default-src从定义的源加载所有内容
脚本源仅从定义的源中加载脚本

以下示例将来自同一来源的所有内容加载到各种Web服务器中.

阿帕奇

在httpd.conf文件中添加以下内容,然后重新启动Web服务器以使其生效.

标头集内容安全策略 "default-src’自我’;"

Nginx的

在nginx.conf文件的服务器块中添加以下内容

add_header内容安全策略 "default-src’自我’;";

Microsoft IIS

在IIS管理器中转到您各自站点的HTTP响应标头,然后添加以下内容

iis-csp

X许可跨域策略

使用Adobe产品(例如PDF,Flash等)?您可以实现此标头来指示浏览器如何处理跨域请求。通过实现此标头,您可以限制从其他域加载网站的资产,以避免资源浪费.

有几种选择.

描述
没有禁止政策
仅主机只允许主策略
所有一切都被允许
仅按内容仅允许某种类型的内容。示例– XML
仅按ftp仅适用于FTP服务器

阿帕奇

如果您不想允许任何政策.

标头集X-Permitted-Cross-Domain-Policies "没有"

您应该看到如下所示的标题.

Nginx的

并且,假设您需要实现仅主机,然后在服务器块下的nginx.conf中添加以下内容.

add_header X-Permitted-Cross-Domain-Policies仅限主机;

结果.

推荐人政策

想要控制网站的引荐来源网址政策?有一定的隐私和安全利益。但是,并非所有浏览器都支持所有选项,因此请在实施之前查看您的要求.

Referrer-Policy支持以下语法.

描述
无推荐人推荐人信息不会随请求一起发送.
降级时无推荐人将引荐来源网址发送到与HTTP到HTTP,HTTPS到HTTPS相同的协议的默认设置.
不安全网址完整的URL将与请求一起发送.
同源推荐人只会发送给同一原始站点.
严格起源仅在协议为HTTPS时发送
严格起源于交叉起源完整的URL将通过严格的协议(例如HTTPS)发送
起源在所有请求中发送原始URL
跨源起源发送来自相同来源的完整网址。但是,在其他情况下,仅发送原始网址.

阿帕奇

如果要设置无引荐来源,您可以添加以下内容.

标头设置引荐来源政策 "无推荐人"

重启后,您应该在响应头中.

Nginx的

假设您需要实现相同来源,因此必须添加以下内容.

add_header Referrer-Policy同源;

配置完成后,您应该获得以下结果.

期望CT

仍处于实验状态的新标头将指示浏览器验证与Web服务器的连接以实现证书透明(CT)。 Google的这个项目旨在修复SSL / TLS证书系统中的某些缺陷.

以下三个变量可用于Expect-CT标头.

描述
最大年龄以秒为单位,浏览器应将策略缓存多长时间.
执行可选指令,用于执行策略.
报告uri当未收到有效的证书透明性时,浏览器将报告发送到指定的URL.

阿帕奇

假设您要执行此政策,报告并缓存12小时,那么您需要添加以下内容.

标头集Expect-CT’enforce,max-age = 43200,report-uri ="https://somedomain.com/report"’

而且,这是结果.

Nginx的

如果您要报告并缓存1小时该怎么办?

add_header Expect-CT’max-age = 60,report-uri ="https://mydomain.com/report"’;

输出将是.

功能政策

控制浏览器的功能,例如地理位置,全屏,扬声器,USB,自动播放,扬声器,振动,麦克风,付款,VR等,以在Web应用程序中启用或禁用.

阿帕奇

假设您需要禁用全屏功能,并且可以在httpd.conf或apache2.conf中添加以下内容.

标头始终设置功能策略 "全屏“无” "

如何在一行中添加多个功能?

也有可能!

标头始终设置功能策略 "全屏“无”;麦克风“无”"

重新启动Apache HTTP以查看结果.

上面的代码将指示浏览器禁用全屏和麦克风.

Nginx的

再举一个例子-禁用振动功能.

add_header功能策略 "振动“无”;";

或者,禁用地理位置,摄像头和扬声器.

add_header功能策略 "地理位置“无”;相机“无”;发言人“无”;";

这是重启Nginx之后的输出.

所有Nginx配置都位于nginx.conf或您使用的任何自定义文件中的http块下.

结论

保护网站安全是一项挑战,我希望通过实现上述标头可以增加安全性。如果您经营的是商务网站,则还可以考虑使用cloud-WAF 苏克里 保护您的在线业务。 SUCURI的优点是它既提供安全性又提供性能.

Jeffrey Wilson Administrator
Sorry! The Author has not filled his profile.
follow me
    Like this post? Please share to your friends:
    Adblock
    detector
    map