CSP는 서버 응답 헤더를 통해 브라우저가 로드할 수 있는 리소스(스크립트, 이미지, 스타일 등)의 출처를 명시적으로 지정하여 웹사이트 보안을 강화합니다. 기존 Ruby on Rails 프로젝트에 CSP를 도입할 때는 Rails 기본 정책으로 시작하며, 초기에는 ‘report-only’ 모드를 통해 정책 위반 사항을 식별합니다. 이 보고서를 기반으로 HTTP 리소스, eval() 사용, 인라인 JavaScript/CSS 등 발견된 문제점들을 수정해야 합니다. 특히 인라인 스크립트에는 서버에서 생성된 nonce 값과 함께 사용해야 신뢰성을 확보할 수 있습니다.
CSP 정책 강화에는 두 가지 주요 방식이 있습니다. 첫째, 도메인 기반 제한은 허용된 모든 도메인을 명시하는 방식입니다. 구현은 용이하나 서드파티 스크립트 관리에 주의가 필요합니다. 둘째, Strict Dynamic 방식은 nonce를 통해 명시적으로 허용된 스크립트만 로드되도록 하는 가장 엄격한 정책입니다. 이는 최고 보안 수준을 제공하지만, 애플리케이션 내 모든 스크립트 로딩 방식을 nonce 기반으로 대대적으로 리팩토링해야 하므로 상당한 개발 노력이 필요합니다. Hotwire 같은 Rails 프론트엔드나 정적 페이지에서 구현이 복잡할 수 있으며, CSP 적용은 지속적인 문제 해결과 검증을 요구하는 과정입니다.