当前位置: 首页 > 面试题库 >

HTML中哪些字符需要转义?

姬自强
2023-03-14
问题内容

它们是否与XML相同,也许还要加上空格( )?

我发现的HTML转义字符一些大名单,但我不认为他们 必须 进行转义。我想知道 需要 逃避什么。


问题答案:

如果你在文本内容预期的位置在文档中插入文本内容1,你通常只需要,你会在XML逃脱相同的字符。在元素内部,这仅包括实体转义&与号和元素定界符小于和大于符号< >

& becomes &amp;
< becomes &lt;
> becomes &gt;

在属性值内部,还必须转义使用的引号字符:

" becomes &quot;
' becomes &#39;

在某些情况下,跳过这些字符中的某些字符可能是安全的,但是我建议您在所有情况下都跳过所有五个字符,以减少犯错的可能性。

如果您的文档编码不支持您正在使用的所有字符,例如您尝试在ASCII编码的文档中使用表情符号,则还需要转义这些字符。如今,大多数文档都使用完全支持Unicode的UTF-8编码进行编码,而无需这样做。

通常,您不应将空格转义为&nbsp;&nbsp;不是正常的空间,而是一个不间断的空间。您可以使用这些空格代替常规空格,以防止在两个单词之间插入换行符,或者在不自动折叠的情况下插入多余的空格,但这通常是很少见的。除非您有一个设计约束,否则请不要这样做。

1所谓“期望文本内容的位置”,是指在其中包含适用常规解析规则的元素或带引号的属性值内。例如:<p>HERE</p><p title="HERE">...</p>。我上面写的内容 不适
用于具有特殊解析规则或含义的内容,例如脚本或样式标签内部,或作为元素或属性名称。例如:<NOT-HERE>...</NOT- HERE><script>NOT-HERE</script><style>NOT-HERE</script>,或<p NOT-HERE="...">...</p>

在这些情况下,规则更复杂,并且引入安全漏洞要容易得多。 我强烈建议您不要在任何这些位置插入动态内容。
我已经看到有能力的,具有安全意识的开发人员团队通过假设他们已经正确编码了这些值而忽略了边缘情况,从而引入了漏洞。通常有一个更安全的选择,例如将动态值放入属性中,然后使用JavaScript处理它。

如果需要,请阅读开放式Web应用程序安全项目的XSS预防规则,以帮助您理解一些需要牢记的问题。



 类似资料:
  • 在Bash中是否有需要转义的字符的全面列表?是否可以只使用检查它? 并且工作正常,没有转义。是否意味着不需要转义?这是检查必要性的好方法吗? 更一般的是:在和中转义的字符是否相同?

  • 只想确认Oracle SQL中需要转义哪些字符才能避免SQL注入?到目前为止,我只发现这篇文章似乎回答了我的问题:https://ss64.com/ora/syntax-escape.html.然而,正如我所听说的,amphora“@”字符也需要转义,因此,我认为上面的文章中有不完整的需要转义的字符列表。如果有人能告诉我Oracle SQL中需要转义的字符的完整列表,我将不胜感激。

  • 问题内容: 我刚刚编写了一个与php函数一起使用的正则表达式,其中包含以下部分: 匹配任何单词字符,以及减号和点。虽然它似乎可以在preg_match中工作,但我尝试将其放入名为Reggy的实用程序中,并且它抱怨 “ char类的空范围” 。反复试验告诉我,这个问题已通过转义减号,将正则表达式转换为 由于原始版本似乎可以在PHP中运行,所以我想知道为什么还是应该转义减号,并且-因为点也是PHP中具

  • 问题内容: 在HTML属性 名称=值 对中,“名称”部分允许使用哪些字符?.....看一些常见的属性,似乎只使用字母(az和AZ),但还可以允许其他字符吗?…也许是数字(0-9),连字符(-)和句点(。)…对此有任何规范吗? 问题答案: 这取决于“允许”的含义。每个标签都有一个固定的有效属性名称列表,在html中,它们不区分大小写。在一个重要的意义上,仅允许以正确的顺序排列这些字符。 另一种查看方

  • 本文向大家介绍前端需要注意哪些SEO?相关面试题,主要包含被问及前端需要注意哪些SEO?时的应答技巧和注意事项,需要的朋友参考一下 合理的title,description,keyswords 搜索引擎对这三项的权重逐个减小,title 值强调重点即可,重要的关键 词出现不要超过两次,而且要靠前。 2 、不同页面的tilte要有所不同;description把页面的内容高度概括,长度合适,不可过分

  • 问题内容: 我正在研究一个简单的代码,该代码从C / C ++应用程序运行Python函数。为了做到这一点,我设置了PYTHONPATH并运行初始化,如下所示: 然后,导入模块并运行函数。效果很好。 我现在正在尝试为我的同事构建一个安装程序以运行我的代码。出于明显的原因,我想减少需要在此安装程序中包含的文件数量。 仔细研究这个主题会告诉我,我应该能够包含文件“ Python27.lib”和“ Py