Same-Origin Policy (SOP, 동일 출처 정책)
**Same-Origin Policy(SOP, 동일 출처 정책)**는 웹 보안 모델 중 하나로, 다른 출처(origin)에서 온 웹 페이지 간의 자원 공유를 제한하는 보안 정책
1. 동일 출처(Origin)의 기준
출처(Origin)는 프로토콜, 도메인, 포트 3가지 요소로 결정됩니다.
다음 요소 중 하나라도 다르면 다른 출처로 간주됩니다.
- 출처 구성 요소:
- 예제:URL출처(Origin)
scheme (프로토콜)://host (도메인):port (포트)
위의 표에서 https://example.com:443을 기준으로 했을 때,
http://example.com:80, https://sub.example.com:443, https://example.com:8080은 다른 출처로 간주됩니다.
2. SOP의 작동 방식
SOP는 한 출처의 웹 페이지에서 다른 출처의 데이터에 접근하는 것을 제한합니다.
허용되는 경우 (Same-Origin)
// 같은 출처 내에서 접근 (가능)
fetch("https://example.com/api/data")
.then(response => response.json())
.then(data => console.log(data));
- https://example.com/api/data에서 데이터를 가져오는 요청은 동일한 출처이므로 허용됨.
차단되는 경우 (Cross-Origin)
// 다른 출처의 API 호출 (차단됨)
fetch("https://api.example.com/data")
.then(response => response.json())
.then(data => console.log(data));
- https://example.com에서 https://api.example.com으로 요청하면 출처가 다르므로 SOP에 의해 차단됨.
3. SOP 예외 (Cross-Origin 허용 방법)
SOP는 기본적으로 보안을 위해 출처가 다른 리소스 접근을 차단하지만, 다음과 같은 방법을 사용하면 예외적으로 허용할 수 있습니다.
✅ 1) CORS (Cross-Origin Resource Sharing)
- 서버에서 CORS 헤더(Access-Control-Allow-Origin)를 설정하면 특정 출처에서의 요청을 허용할 수 있음.
- https://example.com에서 요청을 허용함.
- *을 사용하면 모든 출처에서 요청 가능.
Access-Control-Allow-Origin: https://example.com
✅ 2) JSONP (구식 방법)
- <script> 태그를 이용해 다른 출처의 데이터를 가져오는 방식.
- 보안 취약점으로 인해 현재는 거의 사용되지 않음.
✅ 3) 서버 프록시 사용
- 백엔드 서버에서 프록시 역할을 하여 같은 출처에서 데이터를 받아오도록 처리.
Client -> My Server (Same-Origin) -> External API (Cross-Origin)
4. 왜 SOP가 중요한가?
SOP가 없다면 악성 웹사이트에서 사용자의 데이터를 훔치는 보안 문제가 발생할 수 있습니다.
🔴 SOP가 없을 경우 발생할 수 있는 보안 위협
- CSRF (Cross-Site Request Forgery): 사용자가 로그인된 상태에서 악성 사이트가 요청을 보내 사용자의 권한으로 수행하게 만듦.
- XSS (Cross-Site Scripting): 다른 출처의 데이터를 삽입해 악성 스크립트를 실행.
- 세션 탈취: 공격자가 사용자의 쿠키 및 인증 정보를 가로챌 가능성.
'WEB' 카테고리의 다른 글
3계층 티어 (0) | 2025.01.21 |
---|---|
SQL SESSION 메서드 (0) | 2024.12.02 |
SQL Session Factory (0) | 2024.12.02 |
이미지 파일저장 (0) | 2024.11.21 |
JSP INCLUDE (0) | 2024.11.21 |