神族九帝's blog 神族九帝's blog
首页
网盘 (opens new window)
线报 (opens new window)
商城 (opens new window)
  • 复习指导
  • HTML
  • CSS
  • JavaScript
  • 设计模式
  • 浏览器
  • 手写系列
  • Vue
  • Webpack
  • Http
  • 前端优化
  • 项目
  • 面试真题
  • 算法
  • 精选文章
  • 八股文
  • 前端工程化
  • 基础篇
  • 进阶篇
  • 高级篇
  • 计算机基础
  • 高频考点
  • 精简题
  • 综合问题
  • 复习题
  • vue
  • vue2源码学习
  • 剖析vuejs内部运行机制
  • TypeScript 入门实战笔记
  • vue3源码学习
  • 2周刷完100道前端优质面试真题
  • npm发包
  • 重学node
  • 前端性能优化方法与实战
  • webpack原理与实战
  • webGl
  • 前端优化
  • Web3
  • 更多
  • 网站
  • 资源
  • Vue资源
  • 收藏的一些API
  • 未来要做的事
  • 宝塔面板+青龙面板
  • 安卓手机当服务器使用
  • 京东自动评价代码
  • 搭建x-ui免流服务器(已失效)
  • 海外联盟
  • 好玩的docker
  • 导航
GitHub (opens new window)

神族九帝,永不言弃

首页
网盘 (opens new window)
线报 (opens new window)
商城 (opens new window)
  • 复习指导
  • HTML
  • CSS
  • JavaScript
  • 设计模式
  • 浏览器
  • 手写系列
  • Vue
  • Webpack
  • Http
  • 前端优化
  • 项目
  • 面试真题
  • 算法
  • 精选文章
  • 八股文
  • 前端工程化
  • 基础篇
  • 进阶篇
  • 高级篇
  • 计算机基础
  • 高频考点
  • 精简题
  • 综合问题
  • 复习题
  • vue
  • vue2源码学习
  • 剖析vuejs内部运行机制
  • TypeScript 入门实战笔记
  • vue3源码学习
  • 2周刷完100道前端优质面试真题
  • npm发包
  • 重学node
  • 前端性能优化方法与实战
  • webpack原理与实战
  • webGl
  • 前端优化
  • Web3
  • 更多
  • 网站
  • 资源
  • Vue资源
  • 收藏的一些API
  • 未来要做的事
  • 宝塔面板+青龙面板
  • 安卓手机当服务器使用
  • 京东自动评价代码
  • 搭建x-ui免流服务器(已失效)
  • 海外联盟
  • 好玩的docker
  • 导航
GitHub (opens new window)
  • 复习指导

  • HTML

  • CSS

  • JavaScript

  • 设计模式

  • 浏览器

    • XSS攻击
      • 存储型
      • 反射型
      • 文档型
      • 防范措施
        • 转码
        • 利用 CSP
        • 利用 HttpOnly
      • 总结
      • 参考链接
    • CSRF攻击
    • 浏览器缓存
    • 重绘和回流
    • web安全
    • 地址栏URL回车
  • 手写系列

  • Vue

  • Webpack

  • Http

  • 前端优化

  • 项目

  • 面试真题

  • 算法

  • 精选文章

  • 八股文

  • 前端工程化

  • 面试题
  • 浏览器
wu529778790
2021-06-17

XSS攻击

XSS就是Cross Site Scripting,为了和 css 攻击区分开,所以叫 XSS

XSS 攻击是指浏览器中执行恶意脚本(无论是跨域还是同域),从而拿到用户的信息并进行操作。

  • 窃取 Cookie
  • 监听用户行为,比如输入账号密码后直接发送到黑客服务器
  • 修改 DOM 伪造登录表单
  • 在页面中生成浮窗广告

XSS 分为三种方式

# 存储型

存储型,顾名思义就是将恶意脚本存储了起来,确实,存储型的 XSS 将脚本存储到了服务端的数据库,然后在客户端执行这些脚本,从而达到攻击的效果。

常见的场景是留言评论区提交一段脚本代码,如果前后端没有做好转义的工作,那评论内容存到了数据库,在页面渲染过程中直接执行, 相当于执行一段未知逻辑的 JS 代码,是非常恐怖的。这就是存储型的 XSS 攻击

# 反射型

反射型 XSS 指的是恶意脚本作为网络请求的一部分

http://www.shenzjd.com?q=

这样,在服务器端会拿到 q 参数,然后将内容返回给浏览器端,浏览器将这些内容作为 HTML 的一部分解析,发现是一个脚本,直接执行,这样就被攻击了。

之所以叫它反射型, 是因为恶意脚本是通过作为网络请求的参数,经过服务器,然后再反射到 HTML 文档中,执行解析。和存储型不一样的是,服务器并不会存储这些恶意脚本

# 文档型

文档型的 XSS 攻击并不会经过服务端,而是作为中间人的角色,在数据传输过程劫持到网络数据包,然后修改里面的 html 文档!

这样的劫持方式包括 WIFI 路由器劫持或者本地恶意软件等(dns 篡改)

# 防范措施

一个共同点: 都是让恶意脚本直接能在浏览器中执行

那么要防范它,就是要避免这些脚本代码的执行

一个信念 千万不要相信任何用户的输入!

无论是在前端和服务端,都要对用户的输入进行转码或者过滤。

<script>alert('你完蛋了')</script>

# 转码

&lt;script&gt;alert(&#39;你完蛋了&#39;)&lt;/script&gt;

这样的代码在 html 解析的过程中是无法执行的。

当然也可以利用关键词过滤的方式,将 script 标签给删除。

# 利用 CSP

CSP,即浏览器中的内容安全策略,它的核心思想就是服务器决定浏览器加载哪些资源,具体来说可以完成以下功能

  • 限制其他域下的资源加载
  • 禁止向其它域提交数据
  • 提供上报机制,能帮助我们及时发现 XSS 攻击

# 利用 HttpOnly

很多 XSS 攻击脚本都是用来窃取 Cookie, 而设置 Cookie 的 HttpOnly 属性后,JavaScript 便无法读取 Cookie 的值。这样也能很好的防范 XSS 攻击。

# 总结

XSS 攻击是指浏览器中执行恶意脚本, 然后拿到用户的信息进行操作。主要分为存储型、反射型和文档型。防范的措施包括:

一个信念: 不要相信用户的输入,对输入内容转码或者过滤,让其不可执行。 两个利用: 利用 CSP,利用 Cookie 的 HttpOnly 属性。

# 参考链接

  • https://sanyuan0704.top/my_blog/blogs/browser/browser-security/001.html (opens new window)
编辑 (opens new window)
上次更新: 2021/08/30, 22:22:05
js实现23种设计模式
CSRF攻击

← js实现23种设计模式 CSRF攻击→

最近更新
01
好玩的docker
07-04
02
我的第一个NFT
07-03
03
海外迅雷
06-01
更多文章>
Power by vuepress | Copyright © 2015-2023 神族九帝
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式
×