【发布时间】:2015-07-29 10:14:29
【问题描述】:
我想用一个人的名字清理一个简单的文本字段,以防止 XSS 等。 Stackoverflow 几乎说我必须列入白名单。我不明白这一点。如果我只是从输入值中删除所有< 和>,或者用> 和&ls; 替换它们,那不排除代码注入吗?还是我错过了什么?也许您只需要在不得不忍受尖括号的更复杂的场景中加入白名单?
抱歉,如果这是一个愚蠢的问题,请务必正确处理。
【问题讨论】:
-
&lt;和&gt;,而不是<ls;和<gt;。那里有更复杂的系统来支持 HTML 的子集(像<b>、<i>之类的东西,但不是<script>)。如果您根本不需要任何 HTML,只需删除尖括号就可以了。 -
糟糕,已更正,谢谢!
-
根据您选择使用名称的方式,您可能还需要替换引号和/或撇号(例如,如果您要将名称用作
input元素的值)。它们可以替换为“”和&.您还应该用 & 替换 & 符号。如果您的语言有转义 HTML 的方法,请使用它(例如 .NET 中的 HttpUtility.HtmlEncode 或 PHP 中的 htmlspecialchars)。 -
我正要问这个。 Java和Javascript中HTML转义的方法有哪些?
-
我不知道 Java 或 JavaScript 中有任何内置方法,但有一些方法。对于 Java,请参阅 Recommended method for escaping HTML in Java,对于 JavaScript,请参阅 HTML-encoding in JavaScript/jQuery。
标签: code-injection html-sanitizing javascript-injection