Политика безопасности контента и Google Maps API v3

Я использую CSP, и все идет хорошо. Я разрешаю свои собственные встроенные сценарии с использованием одноразового номера, но теперь у меня проблема с Google Maps.

Я искал везде, но все ТАК вопросы касаются расширений Chrome, тогда как я создаю веб-сайт, использующий Google Maps.

Я получаю эти 2 ошибки в консоли

Отказался оценивать строку как JavaScript, потому что "unsafe-eval" не является разрешенным источником... Uncaught EvalError: отказался оценивать строку как JavaScript, потому что "unsafe-eval" не является разрешенным источником...

Я также видел об использовании песочницы, но не знаю, как это сделать. Кто-нибудь знает как это сделать?

Нужно ли добавлять unsafe-eval (чего я не хочу делать) в заголовки CSP только для определенных страниц, и если да, то будет ли скомпрометирован весь сайт?


person AdRock    schedule 01.03.2015    source источник


Ответы (2)


Добавление unsafe-eval не рекомендуется ни для одного скрипта.
Ознакомьтесь с этим вводом-выводом от Google, он определенно вам поможет: https://www.youtube.com/watch?v=GBxv8SaX0gg

person Kay_N    schedule 02.03.2015
comment
ваша проблема, скорее всего, во встроенных скриптах. надеюсь, это видео поможет. - person Kay_N; 02.03.2015
comment
Так что этот вопрос остается без ответа. Как можно использовать Google Maps API без unsafe-eval. - person Akshay Rawat; 08.05.2015

Вы не знаете.

CSP имеет строгие правила, которые необходимо учитывать при написании javascript, и вы не можете заставить сторонние библиотеки, которые не были разработаны с учетом CSP, работать без изменений.

Есть несколько вариантов:

  1. (Идеально) Вы просите Google обновить код, чтобы он хорошо работал в рамках CSP (включая публикацию рекомендуемого набора правил, необходимого для встраивания их кода на вашу страницу).
  2. (Практично) Вы ослабляете политику только для этой страницы, жертвуя всеми преимуществами CSP в обмен на возможность использовать эту библиотеку.
  3. (Сложный) Вы копируете javascript на свой собственный сервер, используете автоматическое средство форматирования, чтобы попытаться сделать код, преобразованный из углов, читабельным, и самостоятельно исправляете код, чтобы избежать eval (это может быть не разрешено в зависимости от о том, как Google лицензирует свой код).
person anthonyryan1    schedule 18.06.2015