首页 > 其他分享 >HTTP安全响应头配置之X-XSS-Protection

HTTP安全响应头配置之X-XSS-Protection

时间:2023-09-17 21:31:55浏览次数:33  
标签:XSS 浏览器 xss chrome Protection mode HTTP

目的

首先我们来理解一下什么是“X-XSS-Protection”,从字面意思上看,就是浏览器内置的一种 XSS 防范措施。没错,这是 HTTP 的一个响应头字段,要开启很简单,在服务器的响应报文里加上这个字段即可。浏览器接收到这个字段则会启用对应的 XSS 防范模块。

这个header主要是用来防止浏览器中的反射性xss。现在,只有IE,chrome和safari(webkit)支持这个header。

开启这个功能后,当浏览器检测到跨站脚本G击(XSS)时,浏览器将对页面做清理或直接阻止整个页面的加载。

我觉得在目前这种保护措施还是挺有必要的,虽然现代的浏览器支持强大的 CSP(内容安全策略)来禁用不安全的 JavaScript 脚本,但可能由于 CSP 配置起来较为繁琐或是修改原有的配置成本较高,目前来看还是有很大一部分网站没有用上 CSP,并且对于一些不支持 CSP 的旧版浏览器,X-XSS-Protection 可以为他们提供保护。


正确的设置

X-XSS-Protection : 0    –关闭对浏览器的xss防护 表示禁用 XSS 过滤这个功能  
X-XSS-Protection : 1    –开启xss防护  
X-XSS-Protection : 1; mode=block    –开启xss防护并通知浏览器阻止而不是过滤用户注入的脚本。  
X-XSS-Protection : 1; report=http://site.com/report   –这个只有chrome和webkit内核的浏览器支持,这种模式告诉浏览器当发现疑似xss攻-GJ击的时候就将这部分数据post到指定地址。

通常不正确的设置

0; mode=block; – 记住当配置为0的时候,即使加了mode=block选项也是没有效果的。需要指出的是,chrome在发现这种错误的配置后还是会开启xss防护。  
1 mode=block; – 数字和选项之间必须是用分号分割,逗号和空格都是错误的。但是这种错误配置情况下,IE和chrome还是默认会清洗xss攻-GJ击,但是不会阻拦。

如何检测

如果过滤器检测或阻拦了一个反射性xss以后,IE会弹出一个对话框。当设置为1时,chrome会隐藏对反射性xss的输出。如果是设置为 1; mode=block ,那么chrome会直接将user-agent置为一个空值:, URL  这种形式。


标签:XSS,浏览器,xss,chrome,Protection,mode,HTTP
From: https://blog.51cto.com/u_15520037/7504055

相关文章

  • Trino HTTPS 与密码认证介绍与实战操作
    目录一、概述二、安装Trino三、配置HTTPS1)生成证书2)配置Trino3)修改Trinodocker-composeyaml文件4)开始部署Trino5)测试验证四、密码认证1)开启密码认证2)创建密码认证配置文件3)修改Trinodocker-composeyaml文件4)开始部署Trino5)测试验证五、权限控制(优雅下线)1)配置etc/ac......
  • 如何使用 jest 测试使用 axios 的 httpClient?
    要使用Jest测试使用axios的httpClient,您可以使用Jest提供的模拟功能来伪造对外部API的请求和响应。下面是一个示例测试的代码:首先,安装所需的依赖:npminstallaxiosaxios-mock-adapterjest--save-dev然后,创建一个名为httpService.test.js的测试文件,编写以下代码:importaxiosfrom......
  • 关于http
    http是一种超文本传输协议。文本:图片,视频,音频等等http端口:80https端口:443区别:http与服务器连接后只能获得一个web资源而https可以获得多个http请求数据的方式:get:请求能够携带的参数少,大小有限,会在浏览器的url栏中显示信息,不安全,高效post:携带的参数多,没有大小限制,不会在浏览......
  • [Servlet/Tomcat] HttpServletRequest#getHeader(headerNameWithIgnoreCase)(获取heade
    1故事背景最近项目上有个业务需求,翻译成技术需求,即:将request.headers中的几个header入参转换成request.body(pageRequest)中的内置参数。为便于灵活配置,header参数名称是动态可配置的(存放于nacos配置中心),比如:sysCode、Accept-Language技术实现,主要就springmvc的org.spr......
  • 前端项目实战肆佰零玖react-admin和material ui-跨域方案http-proxy-middleware
    const{createProxyMiddleware}=require('http-proxy-middleware');module.exports=(app)=>{app.use(createProxyMiddleware('/postgrest',{target:'http://localhost:4000',changeOri......
  • Web阶段:第九章:Http协议
    Http协议a)什么是HTTP协议什么是协议?是双方,或多方,相互约定一起遵守的规则,叫协议。HTTP协议?http协议是客户端和服务器之间通信,客户端和服务器都需要遵守的数据格式,以及内容叫协议。协议中的内容又叫报文。b)请求的HTTP协议格式协议分为请求协议和响应协议请求协议GET请求1、请求......
  • XSS学习之路
    alert():警告弹窗confirm():确定弹窗prompt():提示弹窗payload关键字测试:onfocus<script><ahref=javascript:alert()>'sRcDaTaOnFocusOnmOuseOverOnMouseDoWnP<sCriPt><ahReF=javascript:alert()>;&arg02="'sRcDaTaOnFocusOnmO......
  • 使用HTTP爬虫ip中的常见误区与解决方法
    在如今的互联网时代,为了保障个人隐私和实现匿名浏览,许多人选择使用HTTP爬虫ip。然而,由于缺乏了解和使用经验,常常会出现一些误区。本文将为大家介绍使用HTTP爬虫ip过程中常见的误区,并提供相应的解决方法,帮助大家更好地使用HTTP爬虫ip并提高网络安全性。误区一:爬虫ip的选择只看速度高......
  • 关于HTTP协议的概述
    HTTP的报文大概分为三大部分。第一部分是请求行,第二部分是请求的首部,第三部分才是请求的正文实体。POST往往是用来创建一个资源的,而PUT往往是用来修改一个资源的。Accept-Charset,表示客户端可以接受的字符集。防止传过来的是另外的字符集,从而导致出现乱码。在HTTP头里面,Cache......
  • OkHttp3发送http请求
    导入依赖<!--https://mvnrepository.com/artifact/com.squareup.okhttp3/okhttp--><dependency><groupId>com.squareup.okhttp3</groupId><artifactId>okhttp</artifactId><version&......