CSP 문제 해결 방법

안녕하세요! CSP 문제로 인해 문제가 발생했는데, 어떻게 해결해야 하나요?

screen

Refused to execute inline script because it violates the following Content Security Policy directive: "script-src https://mydomain.com/logs/ https://mydomain.com/sidekiq/ https://mydomain.com/mini-profiler-resources/ https://mydomain.com/assets/ https://mydomain.com/brotli_asset/ https://mydomain.com/extra-locales/ https://mydomain.com/highlight-js/ https://mydomain.com/javascripts/ https://mydomain.com/plugins/ https://mydomain.com/theme-javascripts/ https://mydomain.com/svg-sprite/ https://mydomain.com". Either the 'unsafe-inline' keyword, a hash ('sha256-ScCk7JwXKy22dTO0VFM7aV1chV+yd/MUda4X6VnGans='), or a nonce ('nonce-...') is required to enable inline execution.

테스트를 위해 안전 모드로 전환해 보았는데, 안전 모드에서도 동일한 문제가 발생합니다.

제 전문 분야는 아니지만, 찾아본 결과 사용하려는 인라인 스크립트를 다시 작성해야 할 수도 있습니다:

CSP 보호를 비활성화할 의사는 없으며, 외부 스크립트도 사용하지 않습니다. 모든 플러그인과 토픽 구성 요소를 비활성화해 보았지만 문제가 해결되지 않았습니다.

관리자 설정의 content security policy script src에 이 모든 링크를 추가해 보았지만, 문제는 여전히 남아 있습니다. :frowning:

https://mydomain.com/logs/ https://mydomain.com/sidekiq/ https://mydomain.com/mini-profiler-resources/ https://mydomain.com/assets/ https://mydomain.com/brotli_asset/ https://mydomain.com/extra-locales/ https://mydomain.com/highlight-js/ https://mydomain.com/javascripts/ https://mydomain.com/plugins/ https://mydomain.com/theme-javascripts/ https://mydomain.com/svg-sprite/ https://mydomain.com`

도움을 드릴 수 있도록 사이트 URL을 공유해 주세요.

PM으로 보내도 될까요?

음…

원인을 찾은 것 같습니다. 제 테마에서 CSP 메타 태그를 사용했기 때문에 문제가 발생하는 것 같습니다:

<meta http-equiv="Content-Security-Policy" content="img-src https://imgur.com https://giphy.com">

금칙된 호스트에서 이미지가 표시되지 않도록 제한하기 위해 img-src 지시문을 사용해야 합니다.

아, 그 CSP 지시문은 정말로 Discourse를 완전히 망가뜨릴 거예요.

머리의 기본 CSP 지시어를 변경하여 메타 태그 없이 img-src를 추가하는 방법은 무엇인가요? Rails에서 다음을 시도해 보았지만 아무런 변경이 없습니다:

Rails.application.config.action_dispatch.default_headers.merge!({'Content-Security-Policy' => "upgrade-insecure-requests; base-uri 'self'; object-src 'none'; script-src https://mydomain.com/logs/ https://mydomain.com/sidekiq/ https://mydomain.com/mini-profiler-resources/ https://mydomain.com/assets/ https://mydomain.com/brotli_asset/ https://mydomain.com/extra-locales/ https://mydomain.com/highlight-js/ https://mydomain.com/javascripts/ https://mydomain.com/plugins/ https://mydomain.com/theme-javascripts/ https://mydomain.com/svg-sprite/; worker-src 'self' https://mydomain.com/assets/ https://mydomain.com/brotli_asset/ https://mydomain.com/javascripts/ https://mydomain.com/plugins/; frame-ancestors 'self'; manifest-src 'self'; img-src data: https://mydomain.com https://imgur.com"})

이 메타 태그를 삭제하면 빌드하고 문제가 해결될 거예요 :frowning: