Rails 7 및 CSP - 인라인 태그에 nonce를 추가하는 방법(필요한 경우)
<style>
에 <head>
요소가 있습니다.내 CSP에 unsafe_inline을 추가하고 싶지 않으므로 유일한 다른 옵션은 nonce를 사용하는 것입니다!
안타깝게도 로그인한 사용자의 기본 설정을 기반으로 일부 CSS 변수를 사용자 지정하는 데 사용되기 때문에 "인라인"스타일이 필요하고 일부 ERB가 포함된 인라인 스타일 요소가 이를 달성하는 가장 빠른 방법처럼 보였습니다.
궁극적으로 작동시키는 방법은 다음과 같습니다.
content_tag(:style, nonce: content_security_policy_nonce) do
':root { --css-var: value; }'
end
가져오기 부분은
content_security_policy_nonce
메서드(단지 request.content_security_policy_nonce
호출)가 다음 두 가지 요구 사항이 충족된 후 ERB에서 nonce를 렌더링합니다.<%= csp_meta_tag %>
가 있습니다config.content_security_policy_nonce_generator = ->(request) { SecureRandom.base64(16) }
config.content_security_policy_nonce_directives = %w(script-src style-src)
nonce 구성에 대한 자세한 내용은 https://edgeguides.rubyonrails.org/security.html#adding-a-nonce을 참조하십시오.
가장 중요한 것은 nonce 지시문에
style-src
를 추가하는 것입니다. 기본적으로 새 Rails 프로젝트에는 script-src만 포함됩니다.Rails는
<script>
태그를 사용하여 이 작업을 수행하는 쉬운 방법을 제공하지만 <style>
태그는 사용하지 않습니다.<%= javascript_tag nonce: true do -%>
alert('Hello, World!');
<% end -%>
이와 같은 인라인 스타일을 사용하는 것이 좋지 않다는 것을 알고 있지만 레거시 앱에 CSP를 추가하거나 스타일을 인라인/헤드에 포함해야 할 때 정말 유용할 수 있습니다.
Reference
이 문제에 관하여(Rails 7 및 CSP - 인라인 태그에 nonce를 추가하는 방법(필요한 경우)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/mdoyle13/rails-7-csp-how-to-add-a-nonce-to-an-inline-tag-if-you-must-59fm텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)