【web】XSS跨域脚本攻击


相关文章:
CSRF攻击原理以及防御方法
CSRF跨站(跨域)请求伪造攻击方式
XSS跨域脚本攻击

1. 概念

XSS:全称是跨域脚本攻击(Cross Site Scripting),为了不和层叠样式表(Cascading Style Sheets, CSS)的缩写混淆,故将跨站脚本攻击缩写为XSS。

注意与CSRF攻击的区别,参见《CSRF攻击》

XSS攻击分为三种,分别是:

  • Reflected XSS(基于反射的XSS攻击)
  • Stored XSS(基于存储的XSS攻击)
  • DOM-based or local XSS(基于DOM或本地的XSS攻击)

特点就是可以将恶意HTML/JavaScript代码注入到受害用户浏览的网页上,从而达到劫持用户会话的目的。XSS根据恶意脚本的传递方式可以分为3种,分别为反射型、存储型、DOM型,前面两种恶意脚本都会经过服务器端然后返回给客户端,相对DOM型来说比较好检测与防御,而DOM型不用将恶意脚本传输到服务器在返回客户端,这就是DOM型和反射、存储型的区别。

2. Reflected XSS

反射型xss指的是客户端的不安全输入而引起的攻击,例如:

在某网站搜索,搜索结果会显示搜索的关键词,搜索时关键词填入,然后点击搜索。如果页面没有对关键词进行过滤及代码转换,这段代码就会直接在页面上执行,弹出 1。

第二种就是数据可以提交到服务端,虽然没有入库,又直接返回页面,也会执行该脚本!

特点是攻击脚本未入库!

开发安全措施:

  1. 前端在显示服务端数据时候,不仅是标签内容需要过滤、转义,就连属性值也都可能需要。

  2. 后端接收请求时,验证请求是否为攻击请求,攻击则屏蔽。

例如存在如下标签:

<span><script>alert('handsome boy')</script></span>

转义为:

<span>&lt;script&gt;alert(&#39;handsome boy&#39;)&lt;/script&gt</span>

3. Stored XSS

基于存储的XSS攻击,是通过发表带有恶意跨域脚本的帖子/文章,从而把恶意脚本存储在服务器,下次每个访问该帖子/文章的人就会触发执行。

原理和Reflected XSS一样,只不过存在数据库里面了

例如,数据的name字段存储就是脚本:
在这里插入图片描述

开发安全措施:

  1. 首要是服务端要进行过滤,因为前端的校验可以被绕过。

  2. 当服务端不校验时候,前端要以各种方式过滤里面可能的恶意脚本,例如script标签,将特殊字符转换成HTML编码。

4. DOM-XSS

DOM-XSS漏洞是基于文档对象模型(Document Objeet Model,DOM)的一种漏洞,DOM-XSS是通过url传入参数去控制触发的,其实也属于反射型XSS。 、

详情参见:《DOM-XSS攻击原理与防御》

5. XSS危害和预防

在这里插入图片描述
应对措施:

(1)对于输出到html的输入内容,采用过滤关键词的方式,把预设的关键词转换成字符实体,例如将< >转换成< 和 > 。
(2)Content-Security-Policy(内容安全策略) 简称 csp
  即只允许页面向我们允许的域名发起跨域请求,而不符合策略的恶意攻击则被阻挡。csp需要在Response Headers中添加

采用CSP(Content-Security-Policy) 一定程度上,可以大大减少xss,详情参见《内容安全策略CSP(Content-Security-Policy)》


参考:
《XSS(跨站脚本)漏洞详解之XSS跨站脚本攻击漏洞的解决》

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值