SOP(Same-Origin Policy, 동일 출처 정책)란?
웹 보안을 위해 다른출처(origin) 간의 리소스 접근을 제한하는 보안정책
XSS, CSRF 등의 공격을 방지하기 위한 기본적인 브라우저 보안기능
✅ 출처(Origin)란?
출처(Origin)는 프로토콜 + 도메인 + 포트 번호 조합을 의미함
출처(origin) = <protocol> + <host> + <port>
예시)
| URL | 출처(Origin) |
| https://example.com:443 | https://example.com:443 |
| http://example.com:80 | http://example.com:80 |
| https://sub.example.com | https://sub.example.com |
✅ 출처가 같은 경우
- https://example.com:443/page1.html → https://example.com:443/api/data
- 프로토콜(https), 도메인(example.com), 포트(443)이 모두 동일 → Same-Origin (요청 가능)
🚨 출처가 다른 경우
- https://example.com:443/page1.html → https://api.example.com/data
- 서브도메인이 다름 (example.com ≠ api.example.com) → Cross-Origin (차단됨)
✅ SOP의 제한 사항
SOP 정책에 의해 다른 출처의 리소스에 접근할 수 없음
- example.com에서 another-domain.com의 데이터를 요청하면 SOP 정책에 의해 차단됨
- 브라우저는 보안상의 이유로 Cross-Origin 요청을 기본적으로 막음
✅ SOP의 예외 (다른 출처에 접근하는 방법)
1.CORS (Cross-Origin Resource Sharing)
- 서버에서 Access-Control-Allow-Origin 헤더를 설정하여 특정 출처에서 접근 허용 가능
- https://another-domain.com 서버가 다음과 같은 헤더를 포함하면 요청 가능
Access-Control-Allow-Origin: <https://example.com>
예제(CORS 사용)
fetch('https://another-domain.com/api/data', {
method: 'GET',
headers: {
'Origin': 'https://example.com'
}
});
2.SONP (과거 방식, 현재는 거의 사용하지 않음)
- <script> 태그를 이용해 JSON 데이터를 받아오는 방식
- SOP 정책을 우회하기 위해 사용되었으나, 보안 문제로 현재는 거의 사용되지 않음
3.서버 프록시 사용
백엔드 서버에서 다른 출처의 데이터를 가져와 프론트엔드에 전달하는 방식
예제:
Client (example.com) → Server (example.com) → API (another-domain.com)
보안상 안전한 방식이며, 자주 사용됨
SOP를 사용하는 이유
XSS (Cross-Site Scripting) 및 CSRF (Cross-Site Request Forgery) 공격을 방어하는 역할을 한다.
📌 XSS(크로스 사이트 스크립팅) 공격 방어
- XSS 공격은 악성 스크립트를 웹사이트에 삽입하여 사용자의 브라우저에서 실행되도록 유도하는 공격
- SOP가 없다면?
- 공격자가 다른 출처의 웹사이트에서 악성 스크립트를 실행하여 사용자의 민감한 데이터를 훔칠 수 있음
- 예: example.com 사용자의 쿠키를 attacker.com에서 가져가는 공격 가능
✅ SOP가 있으면?
- 다른 출처(origin)에서 실행된 스크립트는 현재 웹사이트의 데이터를 읽을 수 없음
- 즉, attacker.com에서 실행된 JavaScript가 example.com의 document.cookie에 접근할 수 없도록 차단
📌 CSRF(크로스 사이트 요청 위조) 공격 방어
- CSRF 공격은 사용자가 모르는 사이에 특정 사이트에서 요청을 보내도록 속이는 공격
- SOP가 없다면?
- 공격자가 evil.com에서 bank.com으로 사용자의 세션을 이용한 요청을 보낼 수 있음
- 사용자가 로그인된 상태에서 악성 사이트에 방문하면, 자동으로 사용자의 인증 정보가 포함된 요청이 전송될 가능성이 있음
✅ SOP가 있으면?
- evil.com에서 bank.com의 API 요청을 직접 수행할 수 없도록 차단
- 즉, 서버에서 CORS 설정 없이 Cross-Origin 요청이 차단됨
- 다만 CSRF 공격은 사용자의 인증 정보를 활용하는 방식이므로, SOP만으로 완벽한 방어가 어렵고 CSRF 토큰 등의 추가적인 보안 조치 필요
📌 CSP(Content Security Policy)와 SOP의 역할 차이
CSP와 SOP는 모두 웹 보안을 강화하지만, 목적과 역할이 다름
| 정책 | 역할 방어 | 대상 |
| SOP (Same-Origin Policy) | 다른 출처(origin) 간 리소스 접근 차단 | XSS, CSRF |
| CSP (Content Security Policy) | 악성 스크립트 실행 차단 | XSS (스크립트 삽입) |
✅ SOP는 출처(origin) 기반의 보안 정책
✅ CSP는 웹사이트에서 실행 가능한 리소스를 제한하여 XSS 공격을 방어하는 보안 정책
📌꼬리개념 알고가기!
'CS 준비' 카테고리의 다른 글
| [네트워크]CORS란? (0) | 2025.02.10 |
|---|---|
| [네트워크]XSS (0) | 2025.02.10 |
| 서브넷 마스크 & 게이트웨이 (0) | 2025.02.10 |
| [네트워크]로드밸런서가 무엇인가요? (0) | 2025.02.10 |
| [네트워크]DNS란? (0) | 2025.02.10 |