对于XSS攻击的vue.js漏洞,我有点困惑。我的情况如下:
input_text
<p>{{ inputed_text }}</p>现在的问题是:我是否易受XSS攻击?我尝试了几种解决方案:
时,Vue.js会自动清除输入。
在这两种情况下,我都进行了测试:alert('XSS') <script>alert('XSS')</script> {{ alert('XSS') }} {{constructor.constructor("alert('xss')")() }}
没有任何效果(XSS攻击不可能)。那么现在:应该如何正确地做这件事呢?或者有可能去XSS,但我看不出来?
发布于 2022-08-10 08:49:06
正如您所说,输入文本将保存在数据库中。因此,数据可以在共享相同数据库的其他应用程序中公开。
为了更安全起见,最好在提交到数据库之前对用户输入进行消毒。攻击者可以通过两种方式注入恶意脚本。
我的建议是在API级别删除不需要的字符,因为如果数据在input通过浏览器或在request payload中通过任何API工具被修改时,数据将如何到达API。
实现建议:,您可以定义一个黑名单RegEx,它将包含无效的characters,然后您可以将输入字符串与blacklist匹配,并在任何匹配发生时用空字符替换黑名单字符。
const blackListCharacters = /(<[^>]+>)/ig
const inputString = "<script>alert('Hi')<script>"
const res = inputString.replace(blackListCharacters, '');
console.log(res); // alert('Hi')
https://stackoverflow.com/questions/73302500
复制相似问题