header CSP(Content-Security-Policy)
페이지 정보

본문
https://csp-evaluator.withgoogle.com/
출처 : https://jdh5202.tistory.com/820
CSP 개요
Mozilla가 개발한 표준으로 XSS, Data Injection, Click Jacking 등의 공격을 방지하기 위한 컨텐츠 기반 보안 정책
SOP(Same Origin Policy)와 비슷하지만 CSP는 웹 사이트 관리자가 규칙 적용
웹 서버는 웹 사이트에서 사용 가능한 CSP 헤더를 브라우저에게 전달, 브라우저는 이를 기반으로 웹 페이지 렌더링
인라인 자바스크립트(태그 내에 자바스크립트 명령어 작성) 실행 금지 설정 가능
특정 웹사이트(origin)에서만 자원을 불러오도록 설정하여 공격자 서버에 요청을 차단
공격자가 웹 사이트에 본래 존재하지 않던 스크립트 삽입하는 것을 방지
CSP 보안 정책을 정의한 상태에서 공격자가 다른 소스의 스크립트를 로딩 시 에러 출력
CSP 사용 헤더
Content-Secuirty-Policy : W3C가 지정한 표준 헤더 - 주로 사용
X-Content-Secuirty-Policy : FireFox/IE 구형 브라우저에서 사용되는 헤더
X-WebKit-CSP : 크롬 기반 구형 브라우저에서 사용되는 헤더
CSP 지시문 및 옵션
지시문
default-src : 모든 리소스에 대한 정책
script-src : Javascript 등 웹에서 실행 가능한 스크립트에 대한 정책
style-src : css에 대한 정책
connect-src : script src로 불러올 수 있는 url에 대한 정책
img-src : 이미지 ( data: URL에서 이미지가 로드되는 것을 허용하려면 data:를 지정 )
script-nonce : script-src에 nonce가 포함되는 정책
form-action : form 태그 내 action 부분에 대한 정책
object-src : 플러그인, 오브젝트에 대한 정책
media-src : video, audio
font-src : font
sandbox : HTML 샌드박스
reflected-xss : X-XSS-Protection header와 동일한 효과
report-uri : 정책 위반 케이스가 나타났을 때 내용을 전달할 URL
base-uri: <base> 요소에 나타날 수 있는 URL을 제한
옵션(src)
* : 모든 것을 허용
'none' : 모두 차단
'self' : 현재 도메인만 허용
'unsafe-inline' : 소스코드 내 인라인 자바스크립트 및 CSS 허용
'unsafe-eval' : eval 같은 텍스트-자바스크립트 메커니즘 허용
예시
하위 도메인 리소스만 사용
Content-Security-Policy: default-src 'self'
특정 도메인만 신뢰
Content-Security-Policy: default-src 'self' *.mydomain.com
특정 태그만 허용
Content-Security-Policy: default-src 'self' *.mailsite.com; img-src *
특정 도메인만 무조건 SSL 통신
Content-Security-Policy: default-src https://onlinebanking.jumbobank.com
<?php
//=====================================
// 2023.02.22 캐시재사용 대응방안
header("Cache-Control: no-cache,must-revaildate");
header("Pragma:no-cache");
// 2023.02.22 잘못된 보안 구성 대응방안
$h_url = " data: gap: *.snue.ac.kr *.widerplanet.com *.jsdelivr.net *.gstatic.com *.googleapis.com http://ajax.googleapis.com";
$hs_url = "https://use.fontawesome.com https://match.adsrvr.org https://astg.widerplanet.com https://cm.g.doubleclick.net https://cdn-aitg.widerplanet.com https://fonts.googleapis.com https://stdpay.inicis.com https://stdux.inicis.com";
$hs_url .= " https://maxcdn.bootstrapcdn.com https://cdnjs.cloudflare.com";
$headerCSP = "Content-Security-Policy:"
. "default-src 'self' " . $h_url . " " . $hs_url . " ; "
. "connect-src 'self' " . $h_url . " " . $hs_url . " ; "
. "script-src 'unsafe-inline' 'self' " . $h_url . " " . $hs_url . " ; "
. "style-src 'unsafe-inline' 'self' " . $h_url . " " . $hs_url . " ; "
. "img-src 'self' " . $h_url . " " . $hs_url . " ; "
. "";
header($headerCSP);
//=====================================
- 이전글부트스트랩으로 상단 메뉴 만들기 23.03.16
- 다음글ckeditor 5 사용해 보기 23.01.03
댓글목록
등록된 댓글이 없습니다.