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转义

lodashjs

lodashjs作为常用,集成了escape 方法

https://www.lodashjs.com/docs/lodash.escape

DOM API

转义方法
let textNode = document.createTextNode(``);
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) 字符集。

备注:为了方便起见,以下表格中,“实体名称”简称为“名称”,“实体编号”简称为“编号”

显示名称编号显示名称编号显示名称编号显示名称编号显示名称编号
      ? ¡ ? ¢ £ ¤ ¤ ¤
¥ | ¦ | § § § ¨ ¨ ¨ ? © ?
a ª a ? « ? ? ¬ ?   ­   ? ® ?
ˉ ¯ ˉ ° ° ° ± ± ± 2 ² 2 3 ³ 3
´ μ µ μ ? ? · · · ? ¸ ?
1 ¹ 1 o º o ? » ? ? ¼ ? ? ½ ?
? ¾ ? ? ¿ ? à À à á Á á ? Â ?
? Ã ? ? Ä ? ? Å ? ? Æ ? ? Ç ?
è È è é É é ê Ê ê ? Ë ? ì Ì ì
í Í í ? Î ? ? Ï ? D Ð D ? Ñ ?
ò Ò ò ó Ó ó ? Ô ? ? Õ ? ? Ö ?
× × × ? Ø ? ù Ù ù ú Ú ú ? Û ?
ü Ü ü Y Ý Y T Þ T ? ß ? à à à
á á á a â a ? ã ? ? ä ? ? å ?
? æ ? ? ç ? è è è é é é ê ê ê
? ë ? ì ì ì í í í ? î ? ? ï ?
e ð e ? ñ ? ò ò ò ó ó ó ? ô ?
? õ ? ? ö ? ÷ ÷ ÷ ? ø ? ù ù ù
ú ú ú ? û ? ü ü ü y ý y t þ t
? ÿ ?                        

数学和希腊字母标志
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 â â
£ £ ? Ã Ã ? ã ã
¤ ¤ ¤ ? Ä Ä ? ä ä
¥ ¥ ? Å ˚ ? å å
| ¦ ¦ ? Æ Æ ? æ æ
§ § § ? Ç Ç ? ç ç
¨ ¨ ¨ è È È è è è
? © © é É É é é é
a ª ª ê Ê Ê ê ê ê
? « « ? Ë Ë ? ë ë
? ¬ ¬ ì Ì Ì ì ì ì
/x7f ­ ­ í Í Í í í í
? ® ® ? Î Î ? î î
ˉ ¯ ¯ ? Ï Ï ? ï ï
° ° ° D Ð Ð e ð &ieth;
± ± ± ? Ñ Ñ ? ñ ñ
2 ² ² ò Ò Ò ò ò ò
3 ³ ³ ó Ó Ó ó ó ó
´ ´ ? Ô Ô ? ô ô
μ µ µ ? Õ Õ ? õ õ
? ? Ö Ö ? ö ö
· · · × × × ÷ ÷ ÷
? ¸ ¸ ? Ø Ø ? ø ø
1 ¹ ¹ ù Ù Ù ù ù ù
o º º ú Ú Ú ú ú ú
? » » ? Û Û ? û û
? ¼ ¼ ü Ü Ü ü ü ü
? ½ ½ Y Ý Ý y ý ý
? ¾ ¾ T Þ Þ t þ þ
? ¿ ¿ ? ß ß ? ÿ ÿ
à À À à à à      

参考文章:

巧用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