CSP 2.0 (небезопасный встроенный) и Angular

Если я реализую CSP 2.0 в своем приложении angular и запрещаю unsafe-inline из script-src, будут ли работать ng-click и другие события angular? Я думаю, что CSP заблокирует все это.


person Mayur Arora    schedule 29.09.2015    source источник


Ответы (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 обрабатывает эти выражения.

person Kevin Hakanson    schedule 01.01.2016