728x90
[HTTP 보안]CSP vs SOP
**CSP(Content Security Policy)**와 **SOP(Same-Origin Policy)**는 웹 보안을 강화하기 위한 두 가지 중요한 개념으로, 각각 다른 방식으로 애플리케이션을 보호합니다. 아래에서 이 둘을 비교하며 설명하겠습니다.
1. 정의
- CSP (Content Security Policy)
- 웹 애플리케이션에서 실행 가능한 리소스의 출처를 명시적으로 제한하여, 악성 스크립트 실행(XSS), 데이터 유출 등의 보안 위협을 방지하는 보안 메커니즘.
- 개발자가 HTTP 응답 헤더 또는 <meta> 태그를 사용해 정책을 설정.
- SOP (Same-Origin Policy)
- 웹 브라우저가 한 출처(origin)의 리소스가 다른 출처의 리소스에 접근하는 것을 제한하여, 크로스사이트 요청 위조(CSRF)나 데이터 탈취 같은 공격을 방지하는 보안 모델.
- 브라우저의 기본 보안 정책으로 별도의 설정 없이 작동.
2. 목적
- CSP
- 리소스 로드와 실행을 통제하여 악성 코드 삽입을 방지.
- 예: 악성 스크립트, 이미지, 스타일시트 로드 방지
- SOP
- 서로 다른 출처 간의 상호작용을 제한하여, 민감한 데이터와 세션 정보가 노출되지 않도록 보호.
- 예: https://example.com의 스크립트가 https://another.com의 데이터를 읽지 못하도록 제한.
3. 작동 방식
- CSP
- 정책 설정: 개발자가 HTTP 헤더(Content-Security-Policy)나 <meta> 태그를 통해 정책을 정의.
- 예:
Content-Security-Policy: script-src 'self' https://trusted.com
- 예:
- 브라우저는 CSP를 읽고, 정책에 맞지 않는 리소스 로드나 실행을 차단.
- 정책 설정: 개발자가 HTTP 헤더(Content-Security-Policy)나 <meta> 태그를 통해 정책을 정의.
- SOP
- 브라우저는 출처(origin) 정보를 확인해, 요청이 동일 출처에서 발생했는지 확인.
- 동일 출처란, 스키마(protocol), 호스트(host), **포트(port)**가 모두 같아야 함.
- 예:
- 동일 출처: https://example.com:443 → https://example.com:443
- 다른 출처: https://example.com → http://example.com
- 브라우저는 출처(origin) 정보를 확인해, 요청이 동일 출처에서 발생했는지 확인.
4. 주요 사용 사례
- CSP
- XSS(크로스사이트 스크립팅) 방지.
- 신뢰할 수 없는 리소스 로드를 차단.
- 특정 도메인에서만 스크립트, 스타일, 이미지 로드 허용.
- SOP
- API 호출 시 민감한 데이터 보호.
- 악성 웹사이트가 사용자의 쿠키나 세션 데이터를 탈취하는 것을 방지.
- 특정 조건에서 크로스오리진 요청 제한.
5. 제한 사항 및 한계
- CSP
- 복잡한 설정으로 인해 오작동 가능성(특히 정책에 의한 정당한 리소스 차단).
- 기존 웹사이트에 적용할 경우 개발 비용 상승.
- 브라우저가 CSP를 지원해야 동작.
- SOP
- 완전히 차단하지 않고 허용해야 하는 경우가 많아(CORS 등) 우회가 가능.
- 일부 리소스(CSS, 이미지 등)는 SOP에 의해 제한되지 않음.
- 서버 간 데이터 공유를 위해 추가적인 설정(CORS)이 필요.
6. 주요 차이점 요약
특성 | CSP | SOP |
---|---|---|
목적 | 리소스 실행과 로드를 통제. | 다른 출처 간의 데이터 접근 제한. |
작동 방식 | 정책을 설정하여 브라우저가 리소스 로드/실행을 제한. | 동일 출처(origin)인지 확인 후 요청 제한. |
적용 범위 | 특정 리소스(스크립트, 스타일, 이미지 등). | 데이터 요청과 DOM 접근. |
기본 동작 여부 | 개발자가 명시적으로 설정해야 동작. | 브라우저에서 기본적으로 작동. |
주요 방어 대상 | XSS, 악성 스크립트 삽입. | CSRF, 크로스사이트 데이터 접근. |
결론
- CSP는 XSS와 악성 리소스 로드를 방지하는 데 효과적이며, 웹 애플리케이션 보안을 강화하기 위해 개발자가 명시적으로 설정하는 메커니즘입니다.
- SOP는 브라우저의 기본 보안 정책으로, 출처 간 데이터 접근을 제한하여 민감한 데이터 보호를 보장합니다.
이 둘은 서로 보완적인 역할을 하며, 동시에 적용할 때 더욱 강력한 보안을 제공합니다.
728x90
'프론트엔드 > HTTP' 카테고리의 다른 글
웹페이지 성능 최적화 (0) | 2024.12.31 |
---|---|
[HTTP 보안]CORS (0) | 2024.12.29 |
[HTTP 보안]escape (0) | 2024.12.29 |
[HTTP 보안]sanitize (0) | 2024.12.29 |
[HTTP 기본]curl (1) | 2024.12.28 |