보안 및 CSP 정책
1) 보안 정책이 필요한 이유
최신 프론트 엔드 및 API는 많은 소스 (CNC, 분석, PSP, 3DS, 채팅) 에 따라 다릅니다. 강력한 정책이 없으면 XSS, 클릭 재킹, 데이터 유출 및 세션 하이재킹의 위험이 증가합니다. 보안 정책은 브라우저를 허용 목록 모델로 이동하여 기본적으로 허용되는 것을 제한합니다.
2) 기본 기둥
CSP (Content Security Policy) 는 허용 된 JS/CSS/미디어 소스 및 동작의 중앙 집중식 "메뉴" 입니다.
신뢰할 수있는 유형-DOM-XSS에 대한 유형 수준 보호.
SRI (Subresource Integrity) -스크립트/스타일의 무결성을 제어합니다.
COOP/COEP/CORP-소스 간 상황 및 리소스의 엄격한 격리.
Fetch Metadata ('Sec-Fetch-') 는 교차 사이트 요청을 필터링하기위한 서버 솔루션입니다.
CORS-도메인 간 API 액세스 정책.
클래식 타이틀: HSTS, 'X- 프레임 옵션 '/' 프레임 조상', '참조 정책', '권한 정책', SameSite 쿠키.
3) CSP: 기초 및 원리
3. 1 지침 (키)
'기본-src' - 다른 지침의 기본값입니다.
'스크립트-src' -JS 소스, nonce/hash, '엄격한 역학', '보고서 샘플'.
'style-src' - CSS 소스; '안전하지 않은 인라인' 을 최소화하십시
'img-src', 'flont-src', 'media-src', 'objective-src' (о
'연결-src' - 네트워크 요청 (XHR/페치/웹 소켓).
'frame-src '/' child-src' -타사 프레임 (PSP, 3DS).
'프레임 조상' -우리 사이트를 포함 할 수있는 사람 (클릭 재킹 방지).
'base-uri' - '<base>' 의 대체를 금지합니다.
'양식 작업' -양식을 제출할 수있는 곳.
'업그레이드 안전하지 않은 요청', '블록 전체 혼합 콘텐츠' -TP/HTTPS 믹스와 싸우십시오.
'report-uri '/' report-to' -위반을 보낼 위치.
3. 2 개의 Nonce! 해시
Nonce 접근 방식: 각 HTP 응답에 대해 암호화 랜덤 'nonce' 를 생성하고 인라인 스크립트에 '<schrant nonce = "...">' 를 추가하고 'schrc-src' 는 "..
해시 접근 방식: 인라인 컨텐츠의 고정 해시. 정적 HTML에 적합하며 역학에 불편합니다.
'엄격한 역학': "신뢰할 수있는" 스크립트로로드 된 스크립트 만 신뢰하십시오 (nonce/hash 포함). 동적 부팅 중에 대상 도메인을 나열 할 필요는 없지만 최신 브라우저가 필요합니다.
3. 3 '안전하지 않은' 금지
'안전하지 않은 인라인', '안전하지 않은' 을 피하십시오. 프레임 워크에 eval이 필요한 경우 (예: dev의 소스 맵) dev에만 포함하십시오.
스타일의 경우-가능한 경우 인라인없이 'nonce' 또는 'hash' 를 사용하십시오.
3. 4 엄격한 CSP의 예 (전투 지점)
Content-Security-Policy:
default-src 'none';
base-uri 'self';
object-src 'none';
script-src 'self' 'nonce-{RANDOM}' 'strict-dynamic' https://www. googletagmanager. com;
style-src 'self' 'nonce-{RANDOM}';
img-src 'self' data: https://images. example-cdn. com;
font-src 'self' https://fonts. gstatic. com;
connect-src 'self' https://api. example. com wss://ws. example. com;
frame-src https://3ds. psp. com https://pay. psp. com;
frame-ancestors 'none';
form-action 'self' https://pay. psp. com;
upgrade-insecure-requests;
report-to csp-endpoint; report-sample
4) 신뢰할 수있는 유형 (DOM-XSS)
지침 활성화: '컨텐츠 보안 정책:' 스크립트에 대한 신뢰할 수있는 유형 '; 신뢰할 수있는 앱 기본값 '.
(PHP 3 = 3.0.6, PHP 4) 신뢰할 수있는 유형. (PHP 3 = 3.0.6, PHP 4)
안전하지 않은 할당을 금지합니다 ('요소. 뉴런 HTM =... ') 신뢰할 수있는 유형.
프레임 워크 통합 (React/Angular/Vue): 안전한 렌더링 API를 사용하고 위험한 위험 SetInnerHTML을 피하십시오.
5) SRI (CDN의 무결성)
외부 '<스크립트 >/' <link>' 의 경우 '무결성 = "sha256-... "크로스 오리지널 =" 익명 "'.
대체하지 않는 SRI 보충제, CSP. CNC 버전을 업그레이드 할 때 해시를 업데이트하십시오.
6) 클릭 재킹 및 프레임
현대적인 방법은 '프레임 조상' 입니다 (오래된 'X- 프레임 옵션' 을 대체 함).