Использование директивы ng-csp Angular JS для создания привилегированных приложений Firefox OS

Я являюсь членом группы, отвечающей за создание упакованного приложения для Firefox OS. Из-за ограниченной политики CSP для привилегированных приложений Firefox OS я добавил директиву ng-csp в тело приложения:

<body ng-app="the-app" ng-csp>

Спецификация CSP для привилегированных приложений Firefox OS: default-src *; script-src 'self'; object-src 'none'; style-src 'self' 'unsafe-inline'

Согласно журналам, которые я могу получить с устройства Firefox OS, кажется, что Angular вызывает eval() или конструктор Function(), и оба они заблокированы в привилегированных приложениях Firefox OS, и приложение просто прекращает рендеринг.

Я хотел бы знать, является ли это ожидаемым поведением, известной проблемой или я неправильно применяю директиву?

Кто-нибудь с похожей проблемой?

Заранее спасибо.

Версия Angular: v1.0.1

Журнал ошибок:

05-07 19:31:10.048: ERROR/GeckoConsole(1397): [JavaScript Error: "CSP ERROR: Couldn't parse invalid source 'unsafe-inline'"] 
05-07 19:31:10.048: ERROR/GeckoConsole(1397): [JavaScript Warning: "CSP WARN: Failed to parse unrecognized source 'unsafe-inline'"] 

‹-- Теги CSS удалены -->

05-07 19:31:13.892: ERROR/GeckoConsole(1397): [JavaScript Error: "Error: call to Function() blocked by CSP" {file: "app://788ceebd-a9b7-4a98-a8b0-1ff248e40f52/scripts/vendor/d10639ae.angular.js" line: 6337}] 
05-07 19:31:13.912: ERROR/GeckoConsole(1397): [JavaScript Warning: "CSP WARN:  Directive eval script base restriction violated" {file: "app://788ceebd-a9b7-4a98-a8b0-1ff248e40f52/scripts/vendor/d10639ae.angular.js" line: 6337 column: 0 source: "call to eval() or related function blocked by CSP"}] 

person Ltmatos    schedule 09.05.2013    source источник
comment
CSP также не поддерживает встроенный CSS или javascript. Конечно, Eval не разрешен, но angular не должен использовать eval() в режиме CSP. Убедитесь, что вы не используете встроенные css/js.   -  person Ryan Q    schedule 09.05.2013
comment
Еще немного информации. Я пытался развернуть приложение с директивой ng-csp и без нее, в то время как без директивы ОС Firefox нецензурно говорит, что вызов eval() был заблокирован. При использовании ng-csp, если вы видите выше, ошибка связана с вызовом Function(), заблокированным CSP. Мой вопрос в том, что даже в безопасном режиме Angular использует Function(), чтобы творить чудеса.   -  person Ltmatos    schedule 10.05.2013


Ответы (1)


Мне удалось обнаружить причину этой проблемы. По-видимому, Angular вызывает конструктор функций даже в безопасном режиме CSP (ng-csp), если я пытаюсь создать наблюдатель в $rootscope приложения. Я уже сделал сообщение в группах Angular Google, так как это похоже на ошибку. Я внес изменения в библиотеку Angular JS и заставил ее работать на устройстве с ОС Firefox. Ссылка на пост следующая:

ссылка

Ваше здоровье

person Ltmatos    schedule 13.05.2013