Я хотел закодировать строку в соответствующие html-объекты, но, к сожалению, я не смог. Как я уже сказал в заголовке вопроса, я хочу, чтобы все символов в строке были преобразованы в соответствующие им html-сущности (как числа, так и имена). Так что согласно документации . Я попробовал:
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-сущность имен , а не цифры, но я хочу и то и другое.
Но на удивление 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()
этого не делает. И я не хочу писать все html номера сущностей из здесь символ за символом.