XSS攻与防

一、什么是XSS?

  • XSS 全称是Cross Site Scripting即跨站脚本,是一种网站应用程序的安全漏洞攻击,是代码注入的一种。
  • XSS 允许恶意用户将代码注入到网页上,其他用户在观看网页时就会受到影响。
  • XSS 攻击通常指的是通过利用网页开发时留下的漏洞,通过巧妙的方法注入恶意指令代码到网页,使用户加载并执行攻击者恶意制造的网页程序。
  • XSS 攻击通常包含了HTML以及用户端脚本语言,就是在目标网站目标用户浏览器渲染HTML文档的过程中,出现了不被预期的脚本指令并执行的过程。

二、有哪些危害?

  • 进行网页挂马
  • 盗取用户 Cookie
  • DDOS(拒绝服务)客户端浏览器
  • 钓鱼攻击,高级的钓鱼技巧
  • 删除目标数据、恶意篡改数据、嫁祸
  • 劫持用户 Web 行为,甚至进一步渗透内网
  • 爆发 Web2.0 蠕虫
  • 蠕虫式的 DDoS 攻击
  • 蠕虫式挂马攻击、刷广告、刷浏量、破坏网上数据
  • 传播跨站脚本蠕虫

三、有哪些攻击种类?

在这里插入图片描述

  • 反射型(非持久型)

    基本简介
    • 发出请求时XSS代码出现在URL中,作为输入提交到服务器端,服务器端解析后响应,XSS代码随响应内容一起传回给浏览器,最后浏览器解析执行XSS代码。这个过程像一次反射,故叫反射型XSS。
    • 反射型XSS只是简单的把用户输入的数据从服务器反射给用户浏览器,要利用这个漏洞,攻击者必须以某种方式诱导用户访问一个精心设计的URL(恶意链接),才能实施攻击。

    触发场景
    • 将不可信数据插入到HTML标签之间时,例如DIV, P, TD;

    • 将不可信数据插入到HTML属性里时,形如:

      <div width=$INPUT> …content… </div>
      
    • 将不可信数据插入到SCRIPT里时,如下:

      <script>
      var message = ” $INPUT “;
      </script>
      
    • 还有插入到Style属性里的情况,同样具有一定的危害性

      <span style=” property : $INPUT ”> … </span>
      
    • 将不可信数据插入到HTML URL里时,形如:

      <a href=”http://www.abcd.com?param= $INPUT ”> Link Content </a>
      
    • 使用富文本时,没有使用XSS规则引擎进行编码过滤。


    攻击流程

    在这里插入图片描述

  • 存储型(持久型)

    基本简介
    • 存储型XSS和反射型XSS的差别仅在于,提交的代码会存储在服务器端(数据库,内存,文件系统等),下次请求目标页面时不用再提交XSS代码。
    • 存储型 XSS 攻击最常发生在由社区内容驱动的网站或 Web 邮件网站,不需要特制的链接来执行。
    • 存储型 的 XSS 的危险性比非持久性高,因为用户没有办法保护自己。一旦黑客成功在某个页面注入了漏洞利用代码,他将宣传受感染页面的 URL 来希望不知情的用户中招。即使用户对非持续性 XSS 的 URL 懂得识别,也会很容易的受到影响。

    触发场景
    • 最典型的例子是留言板XSS,用户提交一条包含XSS代码的留言存储到数据库,目标用户查看留言板时,那些留言的内容会从数据库查询出来并显示,浏览器发现有XSS代码,就当做正常的HTML与Js解析执行,于是触发了XSS攻击。

    攻击流程

    在这里插入图片描述

  • DOM型 XSS

    基本简介
    • DOM XSS和反射型XSS、存储型XSS的差别在于DOM XSS的代码并不需要服务器参与,触发XSS靠的是浏览器端的DOM解析,完全是客户端的事情。
    • 前面两种恶意脚本都会经过服务器端然后返回给客户端,相对DOM型来说比较好检测与防御,而DOM型不用将恶意脚本传输到服务器在返回客户端,即DOM型XSS一般和服务器的解析响应没有直接的关系,而是在JavaScript脚本动态执行的过程中产生的。

    攻击流程
    • 反射型DOM base XSS
      在这里插入图片描述

    • 存储型DOM base XSS
      在这里插入图片描述

四、如何预防攻击?

对用户输入进行检查
  • 使用XSS Filter类,过滤掉非法字符
对后台输出进行检查
  • 一般来说,除了富文本的输出外,在变量输出到HTML页面时,可以使用编码或转义的方式来防御XSS攻击
  • 编码分为很多种,针对HTML代码的编码方式是HtmlEncode
存放于cookie中的数据设置为http-only
  • HttpOnly并非为了对抗XSS——HttpOnly解决的是XSS后的Cookie劫持攻击,但添加了HttpOnly不等于解决了XSS问题,使用HttpOnly有助于缓解XSS攻击
  • Cookie设置了HttpOnly,则使用XSS窃取用户的Cookie会失败,因为JavaScript读取不到Cookie的值
  • XSS攻击带来的不光是Cookie劫持问题,还有窃取用户信息、模拟用户身份执行操作等诸多严重的后果。如前文所述,攻击者利用AJAX构造HTTP请求,以用户身份完成的操作,就是在不知道用户Cookie的情况下进行的
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

编程小吉

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值