TML 转义字符:xss 攻击与 HTML 字符的转义和反转义
xss 与转义符 xss 简单来说:
XSS 攻击是页面被注入了恶意的代码
XSS 漏洞是 可以让攻击者注入恶意代码可执行的漏洞
具体参看之前写的:
web 开发前端安全问题总结——web 前端安全问题汇总 https://www.zhoulujun.cn/html/webfront/SGML/web/2017_0503_8004.html
前端安全配置 xss 预防针 Content-Security-Policy(csp)配置详解 https://www.zhoulujun.cn/html/webfront/SGML/web/2017_0503_8004.html
script 新属性 integrity 与 web 安全,再谈 xss https://www.zhoulujun.cn/html/webfront/ECMAScript/js6/2018_0521_8115.html
为了 xss,常见的转义符
字符 转义后的字符 & &< <
>" "' '/ /转义只是防止 xss 攻击的一种手段之一,更多请查看:《web 开发前端安全问题总结——web 前端安全问题汇总》
html 转义与反转义方法 html 转义 lodashjslodashjs 作为常用,集成了 escape 方法
https://www.lodashjs.com/docs/lodash.escape
DOM API 转义方法 let textNode = document.createTextNode(<script src='https://www.zhoulujun.cn/xxs.js'></script>
);let div = document.createElement('div')div.append(textNode);console.log(div.innerHTML);反转义方法 let str = `<script src='let doc = new DOMParser().parseFromString(str, 'text/html');console.log(doc.documentElement.textContent);
字符串替换处理 转义与反转义就是正则替换,这里想不讲了,能用库太多了,去看一下源码就好了
HTML 常用转义字符对照表最常用的字符实体 Character Entities 显示 说明 实体名称 实体编号
半方大的空白
全方大的空白
不断行的空白格 < 小于 < <
大于 > >& &符号 & &" 双引号 " "© 版权 © ©® 已注册商标 ® ®™ 商标(美国) ™ ™× 乘号 × ×÷ 除号 ÷ ÷ISO 8859-1 (Latin-1)字符集 HTML 4.01 支持 ISO 8859-1 (Latin-1) 字符集。
备注:为了方便起见,以下表格中,“实体名称”简称为“名称”,“实体编号”简称为“编号”
显示 名称 编号 显示 名称 编号 显示 名称 编号 显示 名称 编号 显示 名称 编号
¡ ¡ ¡ ¢ ¢ ¢ £ £ £ ¤ ¤ ¤¥ ¥ ¥ ¦ ¦ ¦ § § § ¨ ¨ ¨ © © ©ª ª ª « « « ¬ ¬ ¬ ® ® ®¯ ¯ ¯ ° ° ° ± ± ± ² ² ² ³ ³ ³´ ´ ´ µ µ µ ¶ ¶ ¶ · · · ¸ ¸ ¸¹ ¹ ¹ º º º » » » ¼ ¼ ¼ ½ ½ ½¾ ¾ ¾ ¿ ¿ ¿ À À À Á Á Á   ÂÃ Ã Ã Ä Ä Ä Å Å Å Æ Æ Æ Ç Ç ÇÈ È È É É É Ê Ê Ê Ë Ë Ë Ì Ì ÌÍ Í Í Î Î Î Ï Ï Ï Ð Ð Ð Ñ Ñ ÑÒ Ò Ò Ó Ó Ó Ô Ô Ô Õ Õ Õ Ö Ö Ö× × × Ø Ø Ø Ù Ù Ù Ú Ú Ú Û Û ÛÜ Ü Ü Ý Ý Ý Þ Þ Þ ß ß ß à à àá á á â â â ã ã ã ä ä ä å å åæ æ æ ç ç ç è è è é é é ê ê êë ë ë ì ì ì í í í î î î ï ï ïð ð ð ñ ñ ñ ò ò ò ó ó ó ô ô ôõ õ õ ö ö ö ÷ ÷ ÷ ø ø ø ù ù ùú ú ú û û û ü ü ü ý ý ý þ þ þÿ ÿ ÿ
数学和希腊字母标志 symbols, mathematical symbols, and Greek letters 显示 名称 编号 显示 名称 编号 显示 名称 编号 显示 名称 编号 显示 名称 编号ƒ ƒ ƒ Α Α Α Β Β Β Γ Γ Γ Δ Δ ΔΕ Ε Ε Ζ Ζ Ζ Η Η Η Θ Θ Θ Ι Ι ΙΚ Κ Κ Λ Λ Λ Μ Μ Μ Ν Ν Ν Ξ Ξ ΞΟ Ο Ο Π Π Π Ρ Ρ Ρ Σ Σ Σ Τ Τ ΤΥ Υ Υ Φ Φ Φ Χ Χ Χ Ψ Ψ Ψ Ω Ω Ωα α α β β β γ γ γ δ δ δ ε ε εζ ζ ζ η η η θ θ θ ι ι ι κ κ κλ λ λ μ μ μ ν ν ν ξ ξ ξ ο ο οπ π π ρ ρ ρ ς ς ς σ σ σ τ τ τυ υ υ φ φ φ χ χ χ ψ ψ ψ ω ω ω? ϑ ϑ ? ϒ ϒ ? ϖ ϖ • • • … … …′ ′ ′ ″ ″ ″ ‾ ‾ ‾ ⁄ ⁄ ⁄ ℘ ℘ ℘ℑ ℑ ℑ ℜ ℜ ℜ ™ ™ ™ ℵ ℵ ℵ ← ← ←↑ ↑ ↑ → → → ↓ ↓ ↓ ↔ ↔ ↔ ↵ ↵ ↵⇐ ⇐ ⇐ ⇑ ⇑ ⇑ ⇒ ⇒ ⇒ ⇓ ⇓ ⇓ ⇔ ⇔ ⇔∀ ∀ ∀ ∂ ∂ ∂ ∃ ∃ ∃ ∅ ∅ ∅ ∇ ∇ ∇∈ ∈ ∈ ∉ ∉ ∉ ∋ ∋ ∋ ∏ ∏ ∏ ∑ ∑ ∑− − − ∗ ∗ ∗ √ √ √ ∝ ∝ ∝ ∞ ∞ ∞∠ ∠ ∠ ∧ ∧ ∧ ∨ ∨ ∨ ∩ ∩ ∩ ∪ ∪ ∪∫ ∫ ∫ ∴ ∴ ∴ ∼ ∼ ∼ ∝ ≅ ≅ ≈ ≈ ≈≠ ≠ ≠ ≡ ≡ ≡ ≤ ≤ ≤ ≥ ≥ ≥ ⊂ ⊂ ⊂⊃ ⊃ ⊃ ⊄ ⊄ ⊄ ⊆ ⊆ ⊆ ⊇ ⊇ ⊇ ⊕ ⊕ ⊕⊗ ⊗ ⊗ ⊥ ⊥ ⊥ ⋅ ⋅ ⋅ ? ⌈ ⌈ ? ⌉ ⌉? ⌊ ⌊ ? ⌋ ⌋ ? ⟨ ⟨ ? ⟩ ⟩ ◊ ◊ ◊♠ ♠ ♠ ♣ ♣ ♣ ♥ ♥ ♥ ♦ ♦ ♦
重要的国际标记 markup-significant and internationalization characters 显示 名称 编号 显示 名称 编号 显示 名称 编号 显示 名称 编号 显示 名称 编号" " " & & & < < < > > > Œ Œ Œœ œ œ Š Š Š š š š Ÿ Ÿ Ÿ ˆ ˆ ˆ˜ ˜ ˜
– – – — — —‘ ‘ ‘ ’ ’ ’ ‚ ‚ ‚ “ “ “ ” ” ”„ „ „ † † † ‡ ‡ ‡ ‰ ‰ ‰ ‹ ‹ ‹› › › € € €
JavaScript 转义符转义序列 字符\b 退格\f 走纸换页\n 换行\r 回车\t 横向跳格 (Ctrl-I)' 单引号" 双引号\ 反斜杠富文本通用转义字符字符
十进制
转义字符
描述
@
@
&commat
at 符号
©
©
©
版权符号
!
!
&excl
感叹号
¡
¡
¡
倒置感叹号
:
:
&colon
冒号
,
,
&comma
逗号
·
·
·
中间点
‘
'
&apos
撇号
‘
‘
&lsquo
左单引号
“
“
&ldquo
左双引号
(
(
&lpar
左括号
[
[
&lsqb
左方括号
{
{
&lcub
左花括号
§
§
§
分节符号
_
_
&lowbar
单下划线
|
|
&verbar
竖线
‖
‖
&Verbar
双竖线
∠
∠
&ang
角
#
&num
数字标志
$
$
&dollar
美元符号
%
%
&percnt
百分号
‰
‰
&permil
千分号
‱
‱
pertenk
万分号
*
&ast
星号
/
/
&sol
斜线符号
+
&add
加号
×
×
×
乘号
=
=
&equal
等于号
≈
≈
&asymp
约等于
<
<
<
小于号
≤
≤
&le
小于等于
¹
¹
¹
上标 1
²
²
²
上标 2
³
³
³
上标 3
&
&
&
and 符号
®
®
®
注册商标符
?
?
&quest
问号
¿
¿
¿
倒置问号
;
;
&semi
分号
.
.
&period
句号
•
•
&bull
加重号
“
"
"
引号
’
’
&rsquo
右单引号
”
”
&rdquo
右双引号
)
)
&rpar
右括号
]
]
&rsqb
右方括号
}
}
&rcub
右花括号
¶
¶
¶
段落符号
__
̲
&UnderBar
双下划线
¦
¦
¦
间断竖线
…
…
&hellip
三点省略号
^
^
&Hat
hat 符号
π
ρ
&pi
圆周率
¥
¥
¥
元符号
°
°
°
度符号
√
√
&radic
平方根
∞
∞
&infin
正无穷
±
±
±
加减符号
\
&bsol
反斜线符号
–
–
&ndash
减号
÷
÷
÷
除号
≠
≠
&ne
不等于
≡
≡
&equiv
相当于
>
>
大于号
≥
≥
&ge
大于等于
¼
¼
¼
四分之一
½
½
½
二分之一
¾
¾
¾
四分之三
HTML 特殊转义字符对照表 HTML 特殊转义字符对照表字符 十进制 转义字符 字符 十进制 转义字符 字符 十进制 转义字符? ¡ ¡ Á Á Á á á ᢠ¢ ¢   ˆ â â ⣠£ £ à à à ã ã 㤠¤ ¤ Ä Ä Ä ä ä ä¥ ¥ ¥ Å Å ˚ å å å| ¦ ¦ Æ Æ Æ æ æ æ§ § § Ç Ç Ç ç ç ç¨ ¨ ¨ È È È è è è© © © É É É é é éa ª ª Ê Ê Ê ê ê ê? « « Ë Ë Ë ë ë ë? ¬ ¬ Ì Ì Ì ì ì ì/x7f Í Í Í í í í® ® ® Î Î Î î î îˉ ¯ ¯ Ï Ï Ï ï ï ï° ° ° Ð Ð Ð ð ð &ieth;± ± ± Ñ Ñ Ñ ñ ñ ñ2 ² ² Ò Ò Ò ò ò ò3 ³ ³ Ó Ó Ó ó ó ó′ ´ ´ Ô Ô Ô ô ô ôμ µ µ Õ Õ Õ õ õ õ? ¶ ¶ Ö Ö Ö ö ö ö· · · × × × ÷ ÷ ÷? ¸ ¸ Ø Ø Ø ø ø ø1 ¹ ¹ Ù Ù Ù ù ù ùo º º Ú Ú Ú ú ú ú? » » Û Û Û û û û? ¼ ¼ Ü Ü Ü ü ü ü? ½ ½ Ý Ý Ý ý ý ý? ¾ ¾ Þ Þ Þ þ þ þ? ¿ ¿ ß ß ß ÿ ÿ ÿÀ À À à à à
参考文章:
巧用 DOM API 实现 HTML 字符的转义和反转义 https://www.zhangxinxu.com/wordpress/2021/01/dom-api-html-encode-decode/
java 转换 HTML 字符实体,java 特殊字符转义字符串 https://blog.51cto.com/xionggeclub/3768494
转载本站文章《HTML 转义字符:xss 攻击与 HTML 字符的转义和反转义》,请注明出处:https://www.zhoulujun.cn/html/webfront/SGML/htmlBase/2022_0617_8846.html
版权声明: 本文为 InfoQ 作者【zhoulujun】的原创文章。
原文链接:【http://xie.infoq.cn/article/bc3b5d871af1ba73d7c980f8c】。文章转载请联系作者。
评论