它们是不是和XML一样,也许加上了空格(
)?
我发现了一些很大的HTML转义字符列表,但我不认为它们必须转义()。我想知道需要对进行哪些转义。
发布于 2011-09-12 09:06:36
这取决于上下文。HTML中的一些可能的上下文:
请参阅OWASP的Cross Site Scripting Prevention Cheat Sheet,特别是"Why Can't I Just HTML Entity Encode Untrusted Data?“和"XSS Prevention Rules”部分。但是,最好是阅读整个文档。
发布于 2017-05-02 20:42:10
基本上,有三个主要字符,它们应该总是在你的超文本标记语言和可扩展标记语言文件中转义,这样它们就不会与其余的标记交互,所以正如你可能预期的那样,其中两个字符将是语法包装器,它们是<>,如下所示:
1) < (<)
2) > (>)
3) & (&)
我们也可以使用双引号(")作为“,使用单引号(')作为&apos
避免将动态内容放在<script>
中,并且<style>
.These规则不适用于它们。例如,如果必须在a中包含JSON,请在JSON序列化后将<替换为\x3c,将U+2028字符替换为\u2028,将U+2029替换为\u2029。)
HTML转义字符:完整列表:http://www.theukwebdesigncompany.com/articles/entity-escape-characters.php
因此,您需要转义<,或者&,后面跟任何可能开始字符引用的内容。此外,带引号的属性的规则也是唯一这样的规则,因为匹配的引号是唯一可以终止引号的规则。但是,如果您不想在此处终止属性值,请转义引号。
更改为UTF-8意味着重新保存文件:对页面使用UTF-8字符编码意味着您可以避免大多数转义,只处理字符。但是,请注意,要更改文档的编码,仅更改页面顶部或服务器上的编码声明是不够的。您需要以该编码重新保存文档。为了帮助理解如何使用你的应用程序来实现这一点,请阅读web创作应用中的设置编码。
不可见或不明确的字符:
转义的一个特别有用的作用是表示在表示中不可见或不明确的字符。
一个例子是Unicode字符U+200F从右到左的标记。此字符可用于阐明双向文本中的方向性(例如,当使用阿拉伯语或希伯来语脚本时)。但是,它没有图形形式,因此很难看到这些字符在文本中的位置,如果它们丢失或忘记,可能会在以后的编辑过程中产生意想不到的结果。相反,使用(或其等效的数字字符引用)可以非常容易地识别这些字符。
不明确字符的一个例子是U+00A0无中断空格。这种类型的空格可以防止换行,但在用作字符时,它看起来就像任何其他空格一样。使用使文本中出现这些空格的位置变得非常清楚。
发布于 2018-04-11 10:27:51
确切的答案取决于上下文。通常,这些字符不能出现(HTML 5.2 §3.2.4.2.5):
文本节点和属性值必须由Unicode字符组成,不得包含U+0000字符,不得包含永久未定义的Unicode字符(非字符),并且不得包含除空格字符以外的控制字符。此规范包括对文本节点和属性值的精确值的额外约束,具体取决于它们的精确上下文。
对于HTML中的元素,文本内容模型的约束也取决于元素的类型。例如,在HTML中不需要对textarea元素中的"<“进行转义,因为textarea是一个可避开的原始文本元素。
这些限制分散在整个规范中。例如,属性值(§8.1.2.3)不能包含ambiguous ampersand,并且(i)为空,(ii)在单引号内(因此不能包含U+0027撇号字符'
),(iii)在双引号内(不能包含U+0022引号字符"
),或(iv)不带引号,但有以下限制:
...不得包含任何文字空格字符、任何U+0022引号字符(")、U+0027撇号字符(')、U+003D等号字符(=)、U+003C小于号字符(<)、U+003E大于号字符(>)或U+0060重音字符(`),并且不能为空字符串。
https://stackoverflow.com/questions/7381974
复制相似问题