前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >XSS跨站脚本攻击

XSS跨站脚本攻击

作者头像
WindrunnerMax
发布2020-08-27 10:12:34
1.3K0
发布2020-08-27 10:12:34
举报
文章被收录于专栏:Czy‘s Blog

XSS跨站脚本攻击

每日更新前端基础,如果觉得不错,点个star吧 ? https://github.com/WindrunnerMax/EveryDay

跨站脚本攻击XSS,是最普遍的Web应用安全漏洞。这类漏洞能够使得攻击者嵌入恶意脚本代码到正常用户会访问到的页面中,当正常用户访问该页面时,则可导致嵌入的恶意脚本代码的执行,从而达到恶意攻击用户的目的。

类型

  • 反射型XSS: 攻击者事先制作好攻击链接,需要欺骗用户自己去点击链接才能触发XSS代码,所谓反射型XSS就是将恶意用户输入的js脚本,反射到浏览器执行。
  • 存储型XSS:代码是存储在服务器中的,如在个人信息或发表文章等地方,加入代码,如果没有过滤或过滤不严,那么这些代码将储存到服务器中,每当有用户访问该页面的时候都会触发代码执行,这种XSS非常危险,容易造成蠕虫,大量盗窃cookie,也被称为持久型XSS
  • DOMXSS:类似于反射型XSS,但这种XSS攻击的实现是通过对DOM树的修改而实现的。

原理

当动态页面中插入的内容含有这些特殊字符如<时,用户浏览器会将其误认为是插入了HTML标签,当这些HTML标签引入了一段JavaScript脚本时,这些脚本程序就将会在用户浏览器中执行。当这些特殊字符不能被动态页面检查或检查出现失误时,就将会产生XSS漏洞。

攻击者可以使用户在浏览器中执行其预定义的恶意脚本,劫持用户会话,插入恶意内容、重定向链接、使用恶意软件劫持用户浏览器等等。

基于反射型XSS漏洞,欺骗用户点击以执行js代码,可以盗取cookie

代码语言:javascript
复制
// 直接将输入打印到页面,造成XSS
<?php 
$XssReflex = $_GET['i'];
echo $XssReflex;
代码语言:javascript
复制
<!-- 构造url,点击后就可以执行js代码 -->
http://127.0.0.1/xss.php?i=<script>alert("run javascript");</script>

基于存储型XSS漏洞,将js代码存储于服务器数据库中,服务器直接查询数据库数据显示到页面,即造成XSS 最经典的存储型XSS漏洞是留言板,当用户A在留言板留言一段JS代码<script>alert("run javascript");</script>,后端未经过滤直接存储到数据库,当正常用户浏览到他的留言后,这段JS代码就会被执行,可以借此来盗取cookie

graph LR 恶意用户A --> 构造JS代码 构造JS代码 --> 服务器数据库 服务器数据库 --> 正常用户B显示页面 服务器数据库 --> 正常用户C显示页面 服务器数据库 --> 正常用户...显示页面 正常用户B显示页面 --> 执行js盗取cookie 正常用户C显示页面 --> 执行js盗取cookie 正常用户...显示页面 --> 执行js盗取cookie

基于DOM的型XSS漏洞类似于反射型XSS,但其变化多端,总之一句话,各种姿势,各种插,只要能执行我的Js ,利用<script><img>等标签允许跨域请求资源。 经典案例是可以将标签写入到软件的意见反馈中,当管理员查看留言的反馈即触发XSS,传递cookie与后台管理地址后就可以登录到后台了。

代码语言:javascript
复制
<script scr="js_url"></script>
代码语言:javascript
复制
<img src=1 onerror=appendChild(createElement('script')).src='js_url' />

防御

  • 在用户提交参数前,将提交的字符<>&"'+/等进行转义,严格控制输出
  • 将输入转化为小写对比javascript:,若匹配则过滤
  • cookie设置为http-only,js脚本将无法读取到cookie信息
  • 纯前端渲染,明确innerTextsetAttributestyle,将代码与数据分隔开
  • 避免不可信的数据拼接到字符串中传递给这些API,如DOM中的内联事件监听器,locationonclickonerroronloadonmouseover等,<a>标签的href属性,JavaScripteval()setTimeout()setInterval()等,都能把字符串作为代码运行。
  • 对于不受信任的输入,都应该限定一个合理的长度。
  • 严格的CSP,禁止加载外域代码,禁止外域提交,禁止内联脚本执行等较为严格的方式
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020-03-24 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • XSS跨站脚本攻击
    • 类型
      • 原理
        • 防御
        相关产品与服务
        数据库
        云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档