关于xss:XSS系列之3种类型

9次阅读

共计 1128 个字符,预计需要花费 3 分钟才能阅读完成。

一、概述

Cross-site scripting,简称 XSS,跨站脚本攻打。
XSS 是一种网站应用程序的安全漏洞攻打,是代码注入的一种。它容许歹意用户将代码注入到网页上,其余用户在浏览网页的时候,就会受到影响。

二、反射型 XSS – Reflected XSS

用户在页面的输出,通过 http 申请发送到服务端,服务端解决后,把用户输出原封不到返回到浏览器,浏览器也没做解决间接把用户输出显示到页面种。

1 示例:

代码

// 服务端(koa2)
router.get('/search', async (ctx, next) => {
  let req = ctx.request
  ctx.state = {
    title: 'xss',
    word: req.query.word
  }
  ctx.body = req.query.word ? req.query.word : ''
})

成果:

但当在 URL 输出 <script>alert('xss')</script> 的时候,就被攻打了。

个别多产生在服务端渲染 (如下面的示例) 以及浏览器端通过 js 间接渲染到页面 ($('#search').html(res.data)) 的状况

三、存储型 XSS – Stored XSS

相比反射型,存储型则是把用户输出存储起来了。可想而知影响范畴大很多。

这里就不演示了,有趣味可看看驰名的萨米 XSS 蠕虫攻打。

该蠕虫用 JavaScript 实现,利用贮存型 XSS 破绽流传。它在每个被感化的用户页面显示一行字串“but most of all, samy is my hero”,并将本人复制在该用户页面。当新的用户点击被感化的用户页面时,就会触发该程序在用户的浏览器中运行,导致蠕虫进一步流传,在该新用户主页上再度复制。在短短 20 小时内,从 2005 年 10 月 4 日公布起,超过一百万的用户都运行了该程序。这让该作者的账户在该社交网络上的关注量指数级增长,并让萨米蠕虫成为历史上传播速度最快的计算机病毒。

四、基于 DOM 的 XSS – DOM Based XSS

反射型和存储型都必须通过服务端,但基于 DOM 的 XSS 则不必,间接在浏览器端攻打。

1 示例:

代码

<head>
    <meta charset="utf-8">
    <title>dom based xss</title>
</head>
<body>
    <script>
        document.write("正在拜访的网站是:" + decodeURIComponent(location.href));
    </script>
</body>

成果:

但当在 URL 输出 #<script>alert('xss')</script> 的时候,就被攻打了。

这种就是间接在浏览器端发动的攻打,没通过服务端。

最初

  • 公众号《毛毛虫的小小蜡笔》

有疑难和问题,请留言。

如果感觉文章还能够,请点赞或珍藏,谢谢。

正文完
 0