JS的33个概念—前端安全(跨站脚本攻击XSS和跨站请求伪造CSRF)

1.跨站脚本攻击(XSS)

1)定义

跨站脚本攻击是基于web应用中已知的漏洞,服务端,或者依赖的插件系统。利用其中一种方式,攻击者可以把恶意内容放进目标站点传输的内容中。当这种结合的内容到达客户端的浏览器中,它就已经变成从受信任的来源传输的,然后在系统授权下进行操作。通过寻找把恶意脚本注入web页面的方法,攻击者可以获取对敏感页面的访问权限,例如对session cookie和浏览器代表用户维护的其他信息。跨站脚本攻击是代码注入的一种方式。

2)概念

反射型,存储型,基于DOM三种。

反射型

到目前为止,非持久型(反射型)跨站脚本漏洞是最基本的web漏洞。当web客户端提供数据时,就会出现这种漏洞,常见于HTTP查询参数(例如,HTML表单提交),服务端脚本在没有正确过滤请求时,就立即解析并展示页面结果给用户。

因为html文档是流式结构并且混合了控制状态,格式化,真实内容,结果页面中包含的任何未经验证的用户提交数据,如果没有正确的进行html编码,都有可能导致标签注入。一个典型例子是一个网站搜索引擎:如果搜索了一个字符串,这个搜索字符串通常会在搜索页再显示一次,告诉用户搜索了什么。如果响应没有正确忽略或者拒绝html控制字符串,跨站脚本风险随之而来。

一次反射型攻击通常通过邮件或者中立的站点来实施。诱饵通常是一个看起来安全的url,指向一个受信任的站点,但是包含XSS载体。如果受信任的站点容易受到载体影响,点击这个链接可能会导致受害者的浏览器执行注入脚本。

持久型

持久型(又称存储型)XSS漏洞是一种更有破坏性的跨站脚本缺陷的变种:当攻击者提供的数据保存到了服务端,然后永久的显示在“正常”页面,并且其他用户在浏览器是可以看到,如果这些数据没有经过正确的html编码,就会发生这种攻击。一个典型的例子就是在线留言板,允许用户发布html格式的信息,可以让其他用户看到。

例如,假设有一个数据站点,其中的会员浏览了其他会员的信息,看下是否感兴趣。由于隐私的原因,这个站点会隐藏每个用户的真实姓名和email,这些信息加密保存在服务端,只有当会员登录后才能在浏览器中看到自己真实的姓名和email,但是不能查看其他人的。

假设有一个攻击者,加入了这个站点,并且想要估算出他在站点上看到的用户的真实姓名。要做到这一点,他写了一段脚本,目的是当其他用户看他的个人信息时可以在其他人的浏览器上运行。然后这段脚本发送信息到他自己的服务器,然后就可以搜集这些信息。

为了这么做,对于“描述你的第一次约会”这样问题,攻击者给了一个简短答案(看起来很正常),但是在攻击者答案的最后是一段窃取姓名和email的脚本,如果脚本内嵌在<script>标签中,它就不会在屏幕上显示。然后假设这个站点上的另一个用户看到了攻击者的个人信息,并且查看了攻击者对“描述你的第一次约会”问题的回答,然后攻击者的脚本就会通过浏览器自动的运行,并且从用户自己的机器上窃取了他的真实姓名和email。

持久性XSS漏洞比其他类型都要重要,因为攻击者的恶意脚本可以自动渲染,不需要单独定位受害者或者诱使受害者到第三方网站。特别在一些社交网站上,这些代码可以进一步的通过账号体系被设计成自蔓延型,创造一种客户端蠕虫病毒。

注入方法可以变化很大;在一些场景中,攻击者甚至都不需要与web有功能性的交互。web应用接收的(通过邮件,系统日志,IM等)任意可以被攻击者控制的数据都有可能变成注入载体。

服务端与基于DOM的漏洞

以往第一次发现的XSS漏洞发生在所有数据处理都在服务端完成的应用中。用户输入(包含一个XSS载体)将会被发送到服务端,然后作为一个web页面返回给用户。为了提高用户体验,主流的web应用有大部分的展示逻辑是在客户端运行的,通过AJAX的方式从服务端拉取或者请求数据。

js代码也可以处理用户输入,然后渲染到页面内容中,一种新的反射型XSS攻击的子类型开始出现,被称为基于DOM的跨站脚本攻击。在基于DOM的跨站脚本攻击中,恶意数据不用和服务端交互。相反,它会被js代码完全反射在客户端侧执行。

基于DOM的XSS漏洞的例子是2011年在JQuery插件中发现的一个bug。阻止这种攻击的策略和对待传统XSS攻击的策略类似,只不过是在js代码中实施。一些js框架内建了防止XSS攻击的处理策略,例如Angular.js。

3)示例

攻击者想要利用跨站脚本漏洞,必须以不同的方式对待每种漏洞。对于每一种类型的漏洞,下面都会描述一种特定的攻击载体。下面用到的姓名是专业术语,取自计算机安全领域常用的Alice和Bob。浏览器开发框架可以被用来攻击web站点和用户的本地环境。

反射型(非持久型)

  1. Alice经常访问一个特殊站点,这个站点是Bob托管的。Bob的站点允许Alice以用户名/密码的方式登录,也存储一些敏感信息,例如账单信息。当用户登录时,浏览器保存了一个授权cookie,授权cookie看起来就像无效的字符串,所以客户端,服务端都记得她登录过。

  2. Mallory观察发现Bob的站点包含一个反射型XSS漏洞:

    1. 当她访问搜索页面时,她在输入框中输入一个搜索术语然后点击了提交按钮。如果没有找到搜索结果,页面将会展示她搜索的术语然后加上“not found”关键词,此时的url也变成了http://bobssite.org?q=搜索的术语
    2. 一个正常的搜索查询,像"puppies"这个词,页面简单的显示“puppies not found”,url变成了&
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值