TL; DR - Да, вроде. Это зависит от используемой версии Angular.
Ненадежно по умолчанию
Сегодня Angular использует функцию sanitize для каждой из переменных, которые вы вставляете в шаблон, если вы не скажете иначе (используя обход функции). Сама функция довольно безопасна в использовании и охватывает большинство контекстов, включая - HTML, Style (CSS), hrefs (от javascript: например). Кроме того, Angular будет уведомлять вас (используя консоль браузера) о каждом изменении, которое вносит функция «sanitize».
Где Angular не будет охватывать вас
Использование шаблона на стороне сервера для создания HTML, или с помощью внедрения шаблона в URL ресурсов (например,
Как ее решить?
Существует множество методов, но наиболее безопасных и современных. -art сегодня - это CSP (content-security-policy), вы можете создавать и оценивать своего CSP с помощью инструмента , который Google создал
XSS в более старых версиях Angular
В более старых версиях Angular (, таких как 1.5 ) существовал ряд уязвимостей «внедрения шаблона», т. Е. Злонамеренное использование могло использовать скобки {{}} чтобы ввести свой собственный контролируемый ввод как HTML. Например, если пользователь использует этот шаблон:
<p class="e2e-inner-html-interpolated">{{username}}</p>
, он может выбрать имя пользователя для «alert (alert (document.cook *») 1046 *)) ", и результатом будет:
<p class="e2e-inner-html-interpolated"><script>alert(alert(document.cookie))</script></p>
То есть он мог введите HTML непосредственно в саму страницу. Angular пытался исправить это годами, но без особого успеха (до нескольких версий go).