탐구개발
Content-Security-Policy 헤더값 본문
웹 페이지의 보안을 강화하기 위해 사용되는 HTTP 응답 헤더.
웹 애플리케이션에서 실행되는 스크립트, 스타일, 이미지, 폰트 등의 리소스의 소스를 명시적으로 지정하여
악의적인 스크립트 삽입(예: XSS 공격)과 같은 보안 취약점을 예방
MDN 문서
Content-Security-Policy - HTTP | MDN
The HTTP Content-Security-Policy response header allows website administrators to control resources the user agent is allowed to load for a given page. With a few exceptions, policies mostly involve specifying server origins and script endpoints. This help
developer.mozilla.org
예시
Content-Security-Policy:
default-src https: 'unsafe-eval' 'unsafe-inline';
object-src 'none'
디렉티브 - 리소스 액세스 권한을 설정
지시문
|
제한 대상
|
base-uri
|
문서 내에서 상대 URL을 해석하는 기준이 되는 URL
|
form-action
|
폼의 데이터를 전송할 수 있는 대상 URL을 지정
|
child-src
|
Web Worker, <frame>, <iframe>으로 이용할 수 있는 URL
|
frame-src
|
<frame>, <iframe>, <object> 등의 프레임 리소스의 원본을 지정
|
connect-src
|
AJAX, WebSockets 등의 연결 관련 자바스크립트로 연결할 리소스의 원본을 지정
|
font-src
|
폰트 리소스의 원본을 지정
|
img-src
|
이미지 리소스의 원본을 지정
|
mainfest-src
|
매니페스트를 로드할 원본을 지정
|
media-src
|
비디오나 오디오 등 미디어 리소스의 원본을 지정
<audio>와 <video>를 제공하는 출처
|
object-src
|
<object>, <embed>, <applet> 등 오브젝트 리소스의 원본을 지정
플래시나 자바 애플릿 등 기타 플러그인에 대한 제어
|
script-src
|
자바스크립트 파일의 원본을 지정
|
style-src
|
CSS 스타일 시트 파일의 원본을 지정
|
설정가능한 데이터 속성
데이터 속성
|
설명
|
none
|
로드금지
|
self
|
같은 출처를 지정
|
unsafe-inline
|
인라인 스크립트와 스타일을 허용
<script>, <style>를 허용하기 때문에 XSS 위험있음
|
unsafe-eval
|
문자열로 표현된 자바스크립트 코드를 실행할 수 있는 eval(), new Function(), setTimeout() 등의 실행 허용. XSS 위험있음
|
data:
|
data:URI 허가
|
mediastream:
|
mediastream:URI허가
|
blob:
|
blob:URI 허가
|
filesystem:
|
filesystem:URI 허가
|
디렉티브 - 리소스 엑세스 권한 일괄설정
지시문
|
제한 대상
|
default-src
|
기본 리소스 소스를 지정합니다. 다른 디렉티브들에 의해 재정의되지 않은 리소스에 적용
|
sandbox
|
웹 페이지를 샌드박스 환경에서 실행하도록 지정
팝업, 폼 등의 허용 설정, HTML의 <iframe>의 sandbox 속성과 같은 것을 지정
|
upgrade-insecure-requests
|
HTTP 통신을 모두 HTTPS로 변경
|
디렉티브 - 리소스 액세스 권한 이외
지시문
|
제한 대상
|
report-uri
혹은 report-to
|
보안 위반 사항이 발생했을 때 보고할 보고 엔드포인트 URL을 지정
|
referrer
|
리퍼러의 동작 변경
Deprecated됨
인수로 no-referrer, none-when-downgrade,
origin, origin-when-cross-origin/origin-when-crossorigin, unsafe-url 지정가능 |
reflected-xss
|
반사형 크로스 사이트 스크립팅으로 불리는 공격에 대한 필터 활성화
X-XSS-Protection 헤더와 동일한 기능
reflected-xss가 지원되지 않는 브라우저가 있기 때문에 X-XSS-Protection 헤더 사용 권장
인수로 allow, block, filter 지정가능
|
Content-Security-Policy-Report-Only
content-security-policy 헤더는 XSS 대책의 강력한 수단이 되는 기능이지만, 너무 강력해 정상적인 웹사이트의 동작을 방해할 수 있습니다. content-security-policy-report-only 헤더를 사용하면 검사는 하지만 동작은 멈추지 않게 됩니다.
'HTTP' 카테고리의 다른 글
CORS (교차 출처 리소스 공유) (0) | 2023.11.08 |
---|---|
HTTPS(TLS) 통신 과정 (1) | 2023.11.08 |
Referer 헤더값 (0) | 2023.11.08 |
Cache-Control 헤더값 (0) | 2023.11.08 |
상태코드 301, 302, 303, 307, 308의 차이점 (0) | 2023.11.08 |