【问题标题】:It is possible to parse text from html editor not using v-html in VueJS?可以在 VueJS 中不使用 v-html 解析来自 html 编辑器的文本吗?
【发布时间】:2023-04-01 15:55:01
【问题描述】:

我的项目有管理面板和主页。在管理面板上,我可以使用 HTML 编辑器(本例中为 VueEditor)创建帖子,在数据库中的帖子如下所示:

<p>Here is some test text from VueEditor</p>

然后,我想解析它一个主页,但是,当然,没有<p>标签,所以我用这个:

<p v-html='item.plot'></p>

这是一个问题,IDE 告诉我们:

ESLint: 'v-html' directive can lead to XSS attack.(vue/no-v-html)

真的有那么危险吗?我应该以其他方式解析它吗?

【问题讨论】:

  • v-html 不应用于显示用户生成的内容,否则恶意用户可以创建包含任意 JavaScript 的帖子,该帖子将在页面上执行以窃取会话 cookie。跨度>

标签: javascript html vue.js


【解决方案1】:

是的,真的那么危险。

考虑一下我创建帖子时会发生什么。

Hi I'm Dave this is my <script>alert('pwned,' + document.cookie)</script> post!

我现在可以在您的网站上运行任意 JS 代码,并窃取您提供此代码的每个用户的登录信息。

我对 vue 不是特别熟悉,但大多数框架都有一种简单的方法来输出经过处理的 html。我认为这是 vue 中的{{ itme.plot }}。这不会呈现实际(或任何其他标记),而是呈现转义版本 &amp;lt;script&amp;gt;,浏览器不会将其解释为实际代码。

如果你让我在你的网站中注入我自己的 HTML,那么还有一百万种其他方法可以实现 XSS。

【讨论】:

  • 但是如果只有我可以访问管理面板怎么办?我的意思是,从主页而不是管理面板是否危险,因为没有人可以访问它,只有我。
  • @dokichan 以正确的方式做事更难吗?最好练习以安全的方式做事,这样你就不会在重要的时候以错误的方式做事。所需要的只是让 XSS 被控制。你是对的,如果你只看到这个页面就可以了,但是如果有一天你决定允许用户发帖并且你重用它呢?你会记得你需要修复什么吗?
猜你喜欢
  • 2011-01-27
  • 2012-09-14
  • 2011-02-01
  • 2019-05-06
  • 1970-01-01
  • 1970-01-01
  • 2013-07-22
  • 2011-06-17
  • 1970-01-01
相关资源
最近更新 更多