Angular против XSS - PullRequest
       45

Angular против XSS

0 голосов
/ 18 апреля 2020

Я хочу использовать Angular, и я нашел это по поводу безопасности: https://angular.io/guide/security Правильно ли, что только использование angular защитит вас от всех XSS-атак? Независимо от того, поступают ли данные из базы данных или от пользователей?

Ответы [ 2 ]

2 голосов
/ 18 апреля 2020

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).

0 голосов
/ 18 апреля 2020

Хотя использование Angular обычно делает вас менее склонным к XSS, мы не можем сказать, что у вас нет абсолютно никакого риска. Например, документация ViewChild и ViewChildren предупреждает вас об использовании ElementRef.nativeElement. Они предлагают использовать безопасные функции Renderer2 вместо доступа к функциям и атрибутам DOM nativeElement raw, например innerHTML.

...