xss攻击

141 阅读2分钟

定义:

xss(Cross-site scripting),中文名跨站脚本攻击,恶意攻击者往Web页面里插入恶意Script代码,当用户浏览该页面时,嵌入Web里面的Script代码会被执行,从而达到恶意攻击用户的目的。XSS攻击针对的是用户层面的攻击!

分类

反射型攻击

非持久化,一般是利用网页的搜索功能,需要用户去点击链接才会触发,大多数用来获取用户的cookie信息

eg: 攻击者给你发送了一段包含恶意代码的链接,比如: https:www.abc.com/search.html…,你在点击链接的时候,如果该网站没有对url进行过滤,那么这部分在检索词代码大概率会出现展示在了页面上执行,这就对你造成了攻击

防范:

  1. 因为这种一般是引诱你点击链接攻击的,所以注意不要乱点链接
  2. 这种一般是通过url拼接恶意代码进行攻击的,所以开发者注意一定要过滤,encodeUrlComponent拼接的参数

注入型攻击

存储型XSS,持久化,代码是存储在服务器中的,如在个人信息或发表文章等地方,插入代码,如果没有过滤或过滤不严,那么这些代码将储存到服务器中,用户访问该页面的时候触发代码执行。这种XSS比较危险,容易造成蠕虫,盗窃cookie

<script>
    const adr = '../evil?cakemonster=' + escape(document.cookie);
</script>

防范:

  1. cookie设置httpOnly,设置完成后浏览器端通过document.cookie就获取不到了
  2. 对输入的数据做过滤、html转义、富文本过滤、escapeJson

dom型攻击

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

实现的重点是查找网页上的属性和对应的方法的漏洞,比如说 image.png 比如说上边这个图,页面会拿到hash值,直接拼接到imageUrl上,然后渲染到页面,那黑客拼接一个hash值为#' onerror="alert()",或者是' onerror="../evil?cakemonster=' + escape(document.cookie)"就会在图片加载失败的时候直接执行onerror方法,被攻击 image.png

可能触发DOM型XSS的属性

document.referer
window.name
location
innerHTML
documen.write

防范:

  1. 将不可信的值输出 URL参数之前,进行 URLEncode操作,而对于从 URL参数中获取值一定要进行格式检测(比如你需要的时URL,就判读是否满足URL格式)。
  2. 内容安全策略 CSP,限制执行内联脚本,和可以加载资源的域名网站
  3. 不要使用 Eval来解析并运行不确定的数据或代码