首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Vue.js XSS漏洞

Vue.js XSS漏洞
EN

Stack Overflow用户
提问于 2022-08-10 07:42:07
回答 1查看 368关注 0票数 2

对于XSS攻击的vue.js漏洞,我有点困惑。我的情况如下:

input_text

  • save

  • 从用户获取输入(例如简单的打开文本),比如:将其加载到其他页面上的数据库

  • ,将其加载到vue变量inputed_text

  • show it with <p>{{ inputed_text }}</p>

现在的问题是:我是否易受XSS攻击?我尝试了几种解决方案:

  1. 清理服务器端的输入但问题是,vue.js显示的输入编码(所以我需要使用v-html)
  2. 完全没有消毒功能,因为在呈现输出

时,Vue.js会自动清除输入。

在这两种情况下,我都进行了测试:alert('XSS') <script>alert('XSS')</script> {{ alert('XSS') }} {{constructor.constructor("alert('xss')")() }}

没有任何效果(XSS攻击不可能)。那么现在:应该如何正确地做这件事呢?或者有可能去XSS,但我看不出来?

EN

回答 1

Stack Overflow用户

发布于 2022-08-10 08:49:06

正如您所说,输入文本将保存在数据库中。因此,数据可以在共享相同数据库的其他应用程序中公开。

为了更安全起见,最好在提交到数据库之前对用户输入进行消毒。攻击者可以通过两种方式注入恶意脚本。

  • 通过浏览器通过
  • 使用输入元素,通过swagger或任何其他API工具修改请求有效负载。

我的建议是在API级别删除不需要的字符,因为如果数据在input通过浏览器或在request payload中通过任何API工具被修改时,数据将如何到达API。

实现建议:,您可以定义一个黑名单RegEx,它将包含无效的characters,然后您可以将输入字符串与blacklist匹配,并在任何匹配发生时用空字符替换黑名单字符。

代码语言:javascript
复制
const blackListCharacters = /(<[^>]+>)/ig
 
const inputString = "<script>alert('Hi')<script>"

const res = inputString.replace(blackListCharacters, '');

console.log(res); // alert('Hi')

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73302500

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档