Django избегает этих символов: & < > " '
, чего достаточно для вставки данных в элементы HTML. Однако, если вы хотите установить ненадежные данные в атрибутах, OWASP рекомендует избежать гораздо больше символов:Django: лишний escape-код HTML в атрибутах, как рекомендовано OWASP
буквенно-цифровых символов, за исключением, избежать всех символов с ASCII значения меньше, чем 256 с & #xHH; format (или именованный объект, если имеется ), чтобы предотвратить отключение атрибута.
Причина в том, что очень легко пропустить цитату на атрибуте и котируемые атрибуты могут быть сломаны из многих персонажей, в том числе [space] % * + , -/; <=>^and |
Есть встроенная функция или библиотека для достижения это?
P.S. Еще одно сообщение в блоге, которое стоит прочитать, объясняет, почему в некоторых контекстах требуется более широкая функция эвакуации. : http://wonko.com/post/html-escaping
Bleach имеет другую цель. Он используется для дезинфекции фрагментов HTML-документа. Он НЕ убежит от всех символов, рекомендованных OWASP. Это просто не устранит уязвимость XSS, говорящую выше. – Medorator