XSS漏洞

漏洞简介
Cross-Site Scripting(为了与CSS区别,安全领域叫做XSS)攻击是注入的一种,主要是将恶意脚本注入到可信站点的
HTML页面等网页文件中,当攻击者将注入恶意脚本的网页连接发送给用户。用户打开链接,浏览器会认为恶意脚本来
自可信站点而执行
Reflected XSS(反射型XSS)
反射型XSS是用户输入直接作为响应的一部分作为服务器输出,如用户提交的表单、URL作为错误信息、搜索结果返回给用户,
攻击者构造恶意的URL,Web表单发送给用户,用户点击就会触发

比如上面漏洞介绍里举的例子就是反射型XSS

Stored XSS(存储型XSS)
存储型XSS会把用户输入的数据“存储”到服务端,往往是数据库,往往具有更强的稳定性和破坏性,产生这种漏洞的页面功能
往往是往往是论坛消息、访问者日志、评论字段等
XSS的利用方式

基本上XSS能够做到事就是JS一类的脚本能做到的事,这里举一些XSS的利用方式,但不具体说明

盗取用户Cookie(登录态)
构造GET、POST等HTTP方法模拟网站逻辑以劫持用户身份执行(类似CSRF)
盗取页面数据,如一下用户敏感信息

编码转换

对输入参数和输出参数编码,过滤掉危险字符
这是防御XSS中最重要最有效的一步,服务端对要输出给用户的Web文件内容做以下编码转换(实体编码),同理,如果JS改变了DOM,也要在JS中对数据内容进行以下编码,对于用户的输入输出更要重点处理

–> >
” –> "
/ –> /
’ –> '
& –> &
< –> <
单引号也有转换成'的情况,但是不推荐,因为这种转换不在HTML的规范中,而是在XML和XHTML的规范中
随着前端技术的发展,使用类似Angular JS、VUE JS的框架,本身自带编码转换,了解相关模块的配置之后使用

使用Cookie的httponly标识

为Cookie字段带上httponly的标识,可以防止JS读取Cookie信息,因此可以有效防止XSS攻击中盗取用户Cookie的能力

但是这种方式不是防御了XSS漏洞,只是减少了XSS漏洞造成的损失,但依旧十分有效,前端页面不需要读取Cookie的话尽量为每个Cookie配置这个标识

使用X-XSS-Protection头部进行防御

浏览器本身内置了XSS的防御审计工具,可以通过X-XSS-Protection进行配置,但是浏览器的防御攻击也是人写的代码,本身具有安全隐患

X-XSS-Protection的安全隐患

建议在看明白上文后使用,建议按需求使用X-XSS-Protection: 1; mode=block和X-XSS-Protection: 0两种配置

XSS过滤

存在一些情况,比如富文本,不能使用HTML实体编码的方式进行XSS防御,因为富文本中需要用到HTML标签来显示,在了解需求的情况下使用白名单进行过滤,因为XSS攻击的灵活只推荐使用白名单。设置白名单需要对XSS的可以利用的HTML标签和位置有一定了解,参考OWASP的开源项目anti-samy

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值