HTTP security headers指南,可提高Web浏览器的安全性

HTTP security headers指南,可提高Web浏览器的安全性

前言

ps:根据我的经验,我觉得这部分知识在面试的时候会用得到。

作为开发人员或者站长,我们可以通过控制HTTP headers来增强网站的安全性,这篇文章的目的就是为了说明服务器可以设置不同的响应头,以及这些响应头对Web浏览器的安全性有什么影响。
下面的一些tips可以让开发人员开发出更安全的站点。


X-Content-Options

X-Content-Options 只有一个选项就是nosniff,作用就是告诉浏览器要遵守请求内容的MIME,

由上图,我们看到对/uploads/not-an-image.png的请求,并且服务器没有提供任何 Content-Type ,这个header应该指示文档的MIME是什么,然后Web浏览器试图去猜测这个内容,认为是HTML,但是其中是一个js脚本,浏览器按照html来解析的话,就会造成XSS。

这个图可以清楚的看到,我们的请求是一样的,但是浏览器并没有解析,因为我们加了X-Content-Type-Options,告诉浏览器别去嗅探,阻止了可能到来的XSS攻击。

X-XSS-Protection

这个header的作用是让浏览器启用内置XSS防御,比如chrome就自带这些功能。
在大多数浏览器中,默认情况下启用XSS过滤器,但由于header能够被禁用,启用或启用并阻止,因此要根据网站的使用情况,整个请求仍然很重要。建议将值设置为1; mode = block 这意味着启用XSS过滤器并阻止所有请求。
这是Google Chrome中的默认行为,你没设置他也会给你拦截掉。


如果将它的值设置为0,就会弹框了。
如果服务器将X-XSS-Protection设置为1,则会加载文档,但只会删除和阻止恶意内容(alert(/xss/))。其他非恶意内容不会被阻止。

XSS Auditor并不是能够完全防御XSS攻击,因为有很多bypass,不要依赖这玩意。

Set-Cookie的作用就是设置cookie,当web应用需要进行认证的时候。需要记住一些必要的属性。

  • HttpOnly:防止攻击者通过js获取cookie,接管会话。
  • Secure:cookie只能通过安全传输,一般来说是https,防止中间人攻击。
  • SameSite:这个属性很新,可以提供很好的CSRF保护,会判断cookie的来源。
  • Host-and Secure:这个是cookie名称的前缀,不是属性,攻击者即使更改了cookie,则必须修改后端的设置,这样子就不会发生cookie伪造的功能。

所以,完美的cookie设置应该类似于下面这样:

Set-Cookie: __Host-user=admin; SameSite=Lax; Secure; Path=/; HttpOnly

Clear-Site-Data

Clear-Site-Data是一个比较新的header,只有少数的浏览器支持,但是在很多Web Application中很有用,告诉浏览器应该删除这个站点的缓存,cookie。一个具体的例子就是用户注销以后。
谷歌浏览器在前阵子没更新以前,是会存储用户的密码。

Referrer-Policy

Web服务器之前通过Content-Security-Policy定义了referrer-policy,但现在已将它移至单独的头中。此header只是告诉Web浏览器Referer标头应包含哪些内容,具体取决于上下文。Web应用程序倾向于依赖Referer标头中的信息,通常是为了存储数据,例如验证请求来自特定的URL或源。因此,Web浏览器在URL中包含敏感数据的情况并不少见。

这也可以是增加网站用户完整性的一种方法。例如,如果用户阅读有关猫的新闻文章并且该文章具有指向猫避难所网站的链接,那么浏览器可以知道链接的来源。

关于onion domains的注意事项:应使用strict的referrer-policy,以便不在暗网正常网络之间共享数据。

可以使用不同的指令,在MDN上阅读更多相关指令。

CSP

Content-Security-Policy是最抽象的header,可以告诉Web浏览器应该处理不同资源的方式。如果配置正确,可以大大限制攻击面。它需要你能更好地理解Web应用程序,以便使用既严格又不会阻止正常的资源的策略。

Google有一个工具,https://csp-evaluator.withgoogle.com/,评估你的CSP策略是否安全。

作为Web开发人员,您可以按照本指南添加安全的header,对于喜欢自动化的人,您可以使用像Detectify这样的自动扫描程序来检查Web应用程序是否存在漏洞以及是否缺少HTTP header。实施这些header可以防止XSS攻击,并减少黑客监听用户流量的机会。


文章作者: Wing
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 Wing !
评论
 上一篇
Active Directory 渗透测试靶场(一) Active Directory 渗透测试靶场(一)
0X00 前言我一直想做一个大一点的内网环境的,配置如下: 有一个父域 有一个子域名 信任域 一些web服务 一些AV 数据库 *nix 权限提升 ...... 过年回家没网,win2012我没下,只能先用08当DC。我本人没有服务器,
2019-02-28
下一篇 
在内网中拿下DC的五种常用方法 在内网中拿下DC的五种常用方法
前言我有一个骚想法:这么多年来,我一直从事安全方面的工作,提供了很多的渗透测试服务和红队服务。我一开始做渗透的时候也能很快拿到DC权限。 2013年9月,Spider Labs写了一篇文章,标题是通过SpiderLabs在内网中拿到DC的
2019-02-05
  目录