【发布时间】:2019-04-03 12:00:07
【问题描述】:
我想将一个字符串编码为其对应的 html 实体,但不幸的是我做不到。正如我在问题标题中所说,我希望将字符串中的 all 字符转换为相应的 html 实体(数字和名称)。所以根据documentation。我试过了:
In [31]: import html
In [32]: s = '<img src=x onerror="javascript:alert("XSS")">'
In [33]: html.escape(s)
Out[33]: '<img src=x onerror="javascript:alert("XSS")">'
但我希望转换所有字符,而不仅仅是 '' 、 '&' 等。
而且html.escape 只提供 html 实体 names 而不是数字,但我两者都想要。
但令人惊讶的是,html.unescape 将所有实体转义为对应的字符。
In [34]: a = '<img src=x onerror="javascript
...: 8alert('XSS')">'
In [35]: html.unescape(a)
Out[35]: '<img src=x onerror="javascript:alert(\'XSS\')">'
那么我可以对html.escape 做同样的事情吗?
我真的很惊讶为什么互联网上用于编码和解码 html 实体的 所有 资源没有对所有字符进行编码,而且 php htmlspecialchars() 函数也不这样做。而且我不想从here一个字符一个字符地写出所有的html实体编号。
【问题讨论】:
-
您是否忘记了转义字符串中的一些分号?
-
@MadPhysicist 在
a变量中?我不这么认为。 -
我很确定 html 实体应该以分号结尾
-
@MadPhysicist 当然可以,但它们有意被省略,请参阅this
-
这很好。我想知道你在做什么;)
标签: python python-3.x html-entities