콘텐츠 보안 정책
콘텐츠 보안 정책(CSP)은 웹 페이지가 로드할 수 있는 리소스의 출처를 제어하여 XSS(Cross-Site Scripting)와 같은 특정 유형의 웹 공격을 완화하는 데 사용되는 컴퓨터 보안 표준입니다. CSP는 웹 서버가 웹 브라우저에게 특정 웹 페이지에 대해 허용되는 리소스의 출처를 알려주는 HTTP 응답 헤더 또는 HTML 메타 태그를 통해 정의됩니다. 이러한 출처에는 스크립트, 스타일시트, 이미지, 폰트, 객체 및 기타 웹 리소스가 포함됩니다.
CSP의 주요 목적은 허용된 출처 목록(화이트리스트)을 정의하여 브라우저가 해당 출처에서만 리소스를 로드하도록 강제하는 것입니다. 이를 통해 공격자가 악성 스크립트나 콘텐츠를 삽입하더라도 브라우저는 CSP에 의해 정의된 정책에 따라 해당 콘텐츠를 실행하거나 로드하지 않도록 할 수 있습니다.
CSP는 다음과 같은 주요 지시문(directive)을 사용하여 구성됩니다.
- default-src: 다른 지시문이 정의되지 않은 리소스 유형에 대한 기본 출처를 지정합니다.
- script-src: 스크립트의 유효한 출처를 지정합니다.
- style-src: 스타일시트의 유효한 출처를 지정합니다.
- img-src: 이미지의 유효한 출처를 지정합니다.
- connect-src:
XMLHttpRequest
, WebSocket 및 EventSource를 사용하여 연결할 수 있는 URL을 제한합니다. - font-src: 폰트 리소스의 유효한 출처를 지정합니다.
- object-src:
<object>
,<embed>
및<applet>
요소의 유효한 출처를 지정합니다. - media-src:
<audio>
,<video>
및<track>
요소의 유효한 출처를 지정합니다. - frame-src:
<frame>
및<iframe>
요소의 유효한 출처를 지정합니다. - report-uri: CSP 위반 보고서를 전송할 URL을 지정합니다. (현재는
report-to
로 대체되는 추세입니다.) - report-to: CSP 위반 보고서를 전송할 엔드포인트를 지정합니다.
CSP는 개발자가 웹 애플리케이션의 보안을 강화하고 XSS 공격과 같은 다양한 공격으로부터 보호하는 데 도움이 되는 강력한 도구입니다. 하지만 CSP를 올바르게 구성하고 유지 관리하는 것이 중요하며, 그렇지 않으면 웹 애플리케이션의 기능에 예상치 못한 문제가 발생할 수 있습니다.