HTTP协议安全相关header详解

http协议有许多可以增强网站安全性,减少用户被攻击的安全策略,本文将依次介绍

1、强制使用https传输,HTTP Strict Transport Security (HSTS)

在各种劫持小广告+多次跳转的网络环境下,可以有效缓解此类现象。同时也可以用来避免从https降级到http攻击(SSL Strip)

服务器设置响应头:Strict-Transport-Security: max-age=31536000 ; includeSubDomains​ 即可开启

网站(譬如百度)启用该策略后且在有效期之内,用户在浏览器地址栏输入baidu.com后,浏览器不会经历该过程:baidu.com--->http://www.baidu.com--->https://www.baidu.com;而是直接访问https://www.baidu.com

该策略只适用于80、443端口。

有些网站并不是全站https比如图片,毕竟使用https对服务器性能要求更高,中间人攻击仍然可以修改用户看到的图片

ps:在chrome浏览器和let's encrypt的推动下,不久的将来希望可以进入https时代

这里有个更详细的:https://www.jianshu.com/p/caa80c7ad45c

 

2、HTTPS证书绑定,Public Key Pinning Extension for HTTP (HPKP)

浏览器依据证书链认证https证书,任何合法证书链均可以给某个域名(baidu.com)颁发一个https证书。如果要提高安全性,减少中间人攻击,我们可以明确指定证书指纹提供给浏览器进行身份验证

服务器设置响应头:​Public-Key-Pins: pin-sha256="d6qzRu9zOECb90Uez27xWltNsj0e1Md7GkYYkVoZWmM="; pin-sha256="E9CZ9INDbd+2eRQozYqqbQ2yXLVKB9+xcprMF+44U1g="; report-uri="http://example.com/pkp-report"; max-age=10000; includeSubDomains

有效期设置过长,可能会存在域名证书失效,网站不可访问等特殊情况

 

3、跨站XSS防护,X-XSS-Protection

开启浏览器端的xss防护,减少反射xss对用户的危害(chrome浏览器默认开启)

服务器配置响应头:X-XSS-Protection: 1; mode=block / 1; report=http://[YOURDOMAIN]/your_report_URI 

 

4、阻止网站被嵌套,X-Frame-Options

网站被嵌套,可能出现clickhijacking等攻击

服务器配置响应头:X-Frame-Options: deny/sameorigin/allow-from: DOMAIN

因为​X-Frame-Options只检测与top窗口的关系,若有多层嵌套victim{hacker{victim,则可以绕过,

另外主页面可以监听事件onBeforeUnload可以取消iframe的跳转;iframe的sandbox属性可以禁用iframe中的js

所以需要配合csp规则的Content-Security-Policy: frame-ancestors 'self';

 

5、配置多种安全策略,Content-Security-Policy

可以定义许多安全策略,script-src,frame-src ,referrer等

服务器配置响应头:Content-Security-Policy: script-src 'self'

 

6、响应内容探测,X-Content-Type-Options

有些服务器响应内容未设置content-type,浏览器会自动检测内容type(MIME自识别),会出现编码相关的安全问题(IE和chrome会忽略content-type 自行推测网页格式、编码等,会出现IE的utf-7 xss绕过等bug)

服务器配置响应头:X-Content-Type-Options: nosniff

 

其他参考 https://infosec.mozilla.org/guidelines/web_security

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
响应头(Response Header)是在HTTP请求中服务器返回给客户端的一部分信息,用于描述响应的各种属性和特征。以下是对响应头的详细解释: 1. 状态行:状态行位于响应头的第一行,包括协议版本、状态码和状态消息。协议版本指示使用的HTTP版本,状态码表示请求的处理结果,状态消息是对状态码的简短描述。 2. 服务器信息:响应头包含服务器的信息,如服务器名称、软件版本等。这些信息可以帮助客户端了解正在与之通信的服务器环境。 3. 响应头字段:响应头中包含各种字段,用于描述响应的不同方面。常见的字段包括: - Content-Type:指定响应正文的媒体类型,如text/html、application/json等。 - Content-Length:指示响应正文的长度,以字节为单位。 - Cache-Control:指定客户端如何缓存服务器返回的响应。例如,max-age指示响应可被缓存的最长时间。 - Location:用于重定向响应,指定客户端应该请求的新URL。 - Set-Cookie:用于在响应中设置一个或多个Cookie,以在后续请求中保存状态信息。 - ETag:用于标识响应的内容,可用于缓存验证和重复请求的优化。 4. 其他字段:响应头可能包含其他自定义的或特定于应用程序的字段,用于传递额外的信息。 响应头的使用可以帮助客户端了解和处理服务器返回的响应。通过检查响应头中的字段和值,客户端可以确定响应的类型、大小、缓存策略、重定向信息等,从而适当地处理响应内容。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值