xss 漏洞讲解及应用

what xss

跨站脚本攻击–xss,是指攻击者通过在web页面中写入恶意脚本,造成用户在浏览页面的时候,控制用户浏览器进行操作的攻击方式。

xss 的本质上攻击的是浏览器的解析引擎,通过控制浏览器解析前端代码的输入输出达到攻击的目的。

HTML

HTML 5 大元素

空元素 没有闭合标签,代表有< input>,< area>,< img>,
,< link>…
空元素不能容纳任何元素内容,因为没有闭合标签。

原始文本元素 < script>< /script>,< style>< /style>…
原始文本元素只能容纳原始文本内容。

rcdata元素 < textarea>< /textarea>,< title>< /title>…
rcdata 可以容纳文本内容和字符引用。

外部元素 代表有< svg> 命名空间或者mathml 命名空间元素
可以容纳文本,cdata段,字符引用(&#60,&lt),其他元素和注释。

基本元素 可以容纳文本内容,字符引用,其他元素和注释。

JavaScript 运行的三个地方

1,HTML的< script>< /script> 标签之中。
2,HTML标签的事件属性之中,onclick、onerror
3,浏览器的console开发控制器中。

xss 测试

xss 漏洞原理

核心 输入输出
输入指的是攻击者对服务器网页输入恶意代码,输出指的是浏览器接收到恶意代码后能解析并输出到前端。
xss的原理就是开发者没有对输入的内容进行过滤,导致攻击者输入的代码与前端原有代码发生混淆,形成新的页面语句,并且新的页面语句能被浏览器解析并输出。

xss 测试步骤

1,找到输入点,输入包含特殊字符的内容,单引号,尖括号。。。
2,打开网页源代码或查看页面元素,在源码中查看输出的位置。
3,根据浏览器解析输出的位置,来构造正确的攻击语句。

xss 的三大类型

反射型XSS:

只是简单地把用户输入的数据反射给浏览器,黑客需要诱使用户点击链接。当目标用户访问该链接时,服务器接收该用户目标的请求并进行处理,然后服务器把带有XSS代码的数据发送给目标用户的浏览器,浏览器解析这段带有XSS代码的恶意脚本后,就会触发XSS漏洞。反射型XSS又称为非持久性XSS,这种攻击方式具有一次性。
要经过浏览器和服务器处理。

存储型XSS:

把用户输入的数据”存储“在服务器端。这种XSS具有很强的稳定性。比较常见的一个场景是,攻击者写下一篇包含恶意Javascript代码的博客文章,文章发表后,所有访问该博客文章的用户,都会在他们的浏览器中执行这段恶意的Javascript代码。黑客把恶意的脚本保存在服务器端。存储型XSS也叫持久性XSS。
也要经过浏览器和服务器。

DOM XSS:

不与后台服务器进行交互,是一种通过 dom 操作前端代码输出的时候产生的问题,实际上也是一种放射性xss。

xss 的防御

只要进行实体字符转义就能防止xss吗?
不能。一般的话,实体字符转义只能防范输出在元素内容里面的特殊符号。也有< svg>的黑魔法可以绕过< script>元素内容中的字符实体转义。
还有字符实体转义不能防御输出在属性内的特殊符号,比如通过href="javascript:alert(1)"这种就无法防御。

xsS的防御主要以下3点:

1、使用htmlspecialchars()函数做实体字符转义;
2、对一些链接输出点做校验,必须规定开头是http://或https://的字符串;
3、过滤类似< svg>的特殊标签。

对输入进行过滤,对输出进行转译。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值