Если я реализую CSP 2.0 в своем приложении angular и запрещаю unsafe-inline из script-src, будут ли работать ng-click и другие события angular? Я думаю, что CSP заблокирует все это.
CSP 2.0 (небезопасный встроенный) и Angular
Ответы (1)
AngularJS и Content-Security-Policy хорошо задокументированы в директиве ngCsp. Вот как правила unsafe
влияют на Angular:
unsafe-eval
: это правило запрещает приложениям использоватьeval
илиFunction(string)
сгенерированные функции (среди прочего). Angular использует это в сервисе $parse, чтобы увеличить скорость вычисления выражений Angular на 30%.
unsafe-inline
: это правило запрещает приложениям внедрять пользовательские стили в документ. Angular использует это для включения некоторых правил CSS (например,ngCloak
иngHide
). Чтобы эти директивы работали, когда правило CSP блокирует встроенные стили, вы должны вручную создать ссылку наangular-csp.css
в своем HTML.
В частности, ngClick использует выражение AngularJS...
<ANY
ng-click="expression">
...
</ANY>
... и выражение в AngularJS не нуждается в eval.
Angular не использует
eval()
JavaScript для вычисления выражений. Вместо этого служба Angular$parse
обрабатывает эти выражения.