콘텐츠보안정책(CSP) (Content Security Policy)
쉽게 풀면
콘텐츠보안정책은 웹사이트가 브라우저에게 "이 페이지에서는 허락한 곳에서 온 콘텐츠만 실행해도 돼"라고 미리 규칙을 전달하는 것과 같습니다. 마치 건물 출입 명단에 없는 사람은 아예 들여보내지 않는 경비 시스템처럼, 신뢰할 수 없는 곳에서 삽입된 악성 스크립트가 실행되는 것을 원천적으로 차단하는 역할을 합니다. 이 정책은 HTTP 응답 헤더를 통해 브라우저에 전달됩니다.
왜 중요한가
콘텐츠보안정책은 크로스사이트스크립팅과 같은 코드 삽입형 공격의 피해 범위를 줄이는 대표적 방어 계층으로, 정보보안학 연구에서 웹 방어 기법의 효과성을 평가하는 대상으로 자주 등장합니다. 또한 실제 서비스에서의 정책 설정 오류나 우회 가능성을 분석하는 연구도 활발히 이루어집니다.
논문에서는 이렇게 쓰입니다
실제 웹사이트들의 정책 설정 실태를 조사한 연구 사례입니다.
정책 우회 가능성을 실험적으로 검증한 연구 사례입니다.
조금 더 깊게 보면
콘텐츠보안정책은 스크립트, 스타일시트, 이미지, 프레임 등 리소스 유형별로 허용할 출처를 세분화하여 지정할 수 있으며, 인라인 스크립트 실행을 차단하는 옵션도 포함합니다. 정책이 지나치게 관대하게 설정되거나 예외 조건이 많을 경우 방어 효과가 크게 줄어들 수 있어, 정책 설계의 엄격함이 실제 보안 효과와 직결됩니다. CSP는 script-src, style-src, img-src 등 지시어별로 신뢰할 출처를 나열하는 화이트리스트 방식으로 동작하며, 정책 위반이 발생하면 이를 서버로 보고하도록 설정하는 report-uri 기능을 통해 실시간으로 위반 시도를 모니터링할 수 있습니다.
주의할 점
콘텐츠보안정책을 적용했다고 해서 모든 코드 삽입 공격이 방지되는 것은 아니며, 정책 설정이 느슨하거나 잘못 구성되면 우회될 수 있습니다. unsafe-inline이나 unsafe-eval 같은 예외 지시어를 습관적으로 허용하면 정책의 방어력이 크게 약화되므로, 불가피한 경우가 아니면 사용을 피하는 것이 권장됩니다. 정책을 처음 적용할 때는 즉시 차단 모드 대신 report-only 모드로 먼저 운영하며 오탐 여부를 점검하는 것이 실무적으로 권장됩니다.