内容简介:ps:根据我的经验,我觉得这部分知识在面试的时候会用得到。作为开发人员或者站长,我们可以通过控制HTTP headers来增强网站的安全性,这篇文章的目的就是为了说明服务器可以设置不同的响应头,以及这些响应头对Web浏览器的安全性有什么影响。下面的一些tips可以让开发人员开发出更安全的站点。
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
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攻击,并减少黑客监听用户流量的机会。
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。