Безопасна ли привязка строки Angular для предотвращения xss?

Недавно я начал использовать Angular. Обычно меня используют для очистки любого HTML-кода, хранящегося в моей базе данных. Мой бэкэнд использует php. Я использую HTMLpurifier для очистки HTML. Но когда я использую привязку строки angular, например, объекты html не отображаются правильно:

data = '<data'

//template string binding:
<div>{{data}}</div>

Output on website: &lt;data

Итак, я увидел в другом вопросе, что мне следует использовать: [innerHTML]='data'
Отображать специальные символы HTML в привязках Angular 2?

У меня вопрос: нужно ли вообще очищать мой html? Поскольку кажется, что привязка угловой строки действительно предотвращает появление XSS. Это было бы хорошо, так как это ускорит производительность моего сервера, потому что ему не нужно очищать html.


person Stan    schedule 12.08.2020    source источник
comment
Думаю, решать тебе. Да, angular по умолчанию будет экранировать символы HTML, если вы, возможно, сделаете это в своей БД?   -  person Liam    schedule 12.08.2020
comment
Это зависит от того, чего вы пытаетесь достичь. Если вы просто хотите остановить XSS, htmlspecialchars() лучше, чем HTML Purifier на внутренней стороне - HTML Purifier - это инструмент, который вы должны использовать, если хотите разрешить отображение некоторого HTML. К сожалению, я не могу судить о внешней стороне этого (отсюда комментарий, а не ответ). Я обычно всегда рекомендую выполнить дезинфекцию или ускользнуть в бэкэнде, если вы можете, так как интерфейсом так легко манипулировать, но разумный ли это совет настолько зависит от вашей архитектуры программного обеспечения в целом, что я не уверен, что общий совет поможет здесь. Удачи!   -  person pinkgothic    schedule 13.08.2020
comment
У меня есть несколько полей в моей пользовательской cms, которые представляют собой простой текст. Но у меня также есть некоторые поля ввода, которые редактируются с помощью редактора WYSIWYG (TinyMCE). Поэтому я предполагаю, что мне следует использовать очиститель HTML для ввода WYSIWYG в сочетании с [innerHTML]='data'. А для обычного ввода текста, по вашему мнению, я должен использовать htmlspecialchars(), что означает, что привязка строки Angular не должна использоваться для предотвращения XSS, верно?   -  person Stan    schedule 13.08.2020