天天看点

【web】XSS跨域脚本攻击1. 概念2. Reflected XSS3. Stored XSS4. DOM-XSS5. XSS危害和预防

文章目录

  • 1. 概念
  • 2. Reflected XSS
  • 3. Stored XSS
  • 4. DOM-XSS
  • 5. 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. 后端接收请求时,验证请求是否为攻击请求,攻击则屏蔽。

例如存在如下标签:

转义为:

3. Stored XSS

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

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

例如,数据的name字段存储就是脚本:

【web】XSS跨域脚本攻击1. 概念2. Reflected XSS3. Stored XSS4. DOM-XSS5. XSS危害和预防

开发安全措施:

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

4. DOM-XSS

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

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

5. XSS危害和预防

【web】XSS跨域脚本攻击1. 概念2. Reflected XSS3. Stored XSS4. DOM-XSS5. XSS危害和预防

应对措施:

(1)对于输出到html的输入内容,采用过滤关键词的方式,把预设的关键词转换成字符实体,例如将< >转换成< 和 > 。

(2)Content-Security-Policy(内容安全策略) 简称 csp

  即只允许页面向我们允许的域名发起跨域请求,而不符合策略的恶意攻击则被阻挡。csp需要在Response Headers中添加

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

参考:

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