‘script-src’ не был задан явно, но это было так?

#amazon-cloudfront #content-security-policy

Вопрос:

Я добавил директиву script-src CSP в свой дистрибутив AWS CloudFront, и мой javascript не будет запускаться. В консоли браузера я вижу следующую ошибку:

 Refused to execute inline script because it violates the following Content Security 
Policy directive: "default-src 'self' <<LIST OF DOMAINS>>
Either the 'unsafe-inline' keyword, a hash ('sha256-123abc='), or a nonce ('nonce-...') is required 
to enable inline execution. Note also that 'script-src' was not explicitly set, so 'default-src' is used
as a fallback.
 

Однако в моем CSP есть следующий код:

 ; script-src 'sha256-123abc=' " 
 

Когда я удаляю хэш и использую «self», принимается директива script-src, но таким образом мой скрипт не может быть запущен… кто-нибудь знает, в чем может быть проблема?

Комментарии:

1. (1) Диагностика Chrome иногда вводит в заблуждение (это было исправлено в последней версии). Встроенный сценарий может быть либо <script> тегом, либо <tag onclick='...'> или <a href='javascript:...'> . Последние два не могут быть решены с помощью `хэш-значения» , но Chrome предлагает разрешить их с помощью хэшей. (2) Вы можете использовать 'sha256-123abc=' и 'self' одновременно освещать, почему вы удаляете 'self' , когда добавляете 'hash' ? И как вы определяете, является script-src директива «подобрана» или нет?

Ответ №1:

Проблема здесь заключалась в том, что дистрибутив CloudFront кэшировал ответ в течение длительного периода времени. Я отключил кэширование, и проблема была решена!