Same-Origin Policy (SOP, 동일 출처 정책)

**Same-Origin Policy(SOP, 동일 출처 정책)**는 웹 보안 모델 중 하나로, 다른 출처(origin)에서 온 웹 페이지 간의 자원 공유를 제한하는 보안 정책

1. 동일 출처(Origin)의 기준

출처(Origin)는 프로토콜, 도메인, 포트 3가지 요소로 결정됩니다.
다음 요소 중 하나라도 다르면 다른 출처로 간주됩니다.

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));

차단되는 경우 (Cross-Origin)

// 다른 출처의 API 호출 (차단됨)
fetch("https://api.example.com/data")
  .then(response => response.json())
  .then(data => console.log(data));

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

+ Recent posts