2016-08-10 6 views
7

Как можно добавить директиву «небезопасно-eval» только для одного источника?Политика безопасности содержимого небезопасно-eval только для одного URL

Я занимаюсь разработкой приложений Cordova и как мне нужно, чтобы скрипт-Src из нескольких источников (внешний скрипт, как щебет, и т.д ..) Я поставил в META HTTP-эквив = "Content-Security-Policy: скрипт-Src *

<meta http-equiv="Content-Security-Policy" content="default-src * 'unsafe-inline' data: gap: * 'unsafe-eval'; style-src 'self' 'unsafe-inline'; script-src * 'self' 'unsafe-inline' 'unsafe-eval';">

Это работает, но это опасно, потому что это широко открыты.

Так я хотел бы добавить 'небезопасный-Eval' только ф или сценарий, который в этом нуждается (https://maps.googleapis.com в моем примере)

Возможно ли это?

ответ

1

Вы не можете.

'unsafe-eval' В политике это не какой-то флаг или атрибут, который применяется к определенному источнику сценария. Вместо этого, он является источником сценария самого по себе, как вы можете видеть в этом отрывке из НСП спецификации:

source-expression = scheme-source/host-source/keyword-source/nonce-source/hash-source 
scheme-source  = scheme-part ":" 
host-source  = [ scheme-part "://" ] host-part [ port-part ] [ path-part ] 
keyword-source = "'self'"/"'unsafe-inline'"/"'unsafe-eval'" 

Кроме того, даже если вы можете, это не защитит вас от какого-либо другого сценария Инициирования небезопасный eval в коде api карт с собственной строкой для оценки.

Посмотрите на CSP unsafe-eval using Google Maps API, хотя, возможно, вы можете полностью избавиться от 'unsafe-eval'.