<body>를 통해 파라미터 전달<form>나 Javascript를 이용해야함같은 출처가 아니라면 스크립트를 이용하여 정보를 가져오는게 안됨
ex) <iframe src="">와 <script>로 정보 요청은 가능 응답옴(사진 등)
But 응답받은 데이터를 Javascript를 사용하여 정보를 가져(조작) 올 수는 없음 getElemetById()...
같은 출처란?
1.스키마(프로토콜) -> ex) https
2.도메인 -> ex)www.a.com
3.포트 -> http~~.com:80
위 3가지가 모두 같아야함
경로는 달라도 ok
SOP는 무조건 지켜야 하기 때문에 제약이 너무 많아 범용성과 편의성이 떨어져 보완하기위해 나타남
기존 SOP + 몇가지 (예외 상황을 지정한)규칙 추가
-> 다른 출처에서도 데이터 접근 가능
제일 대표적인 CORS이다.
ACAO는 응답에서 나타난다.
ACAO 도메인은 허락된 도메인에서 응답했을때 해당 도메인을 볼수있음 But 전체리스트 보기 불가능
SOP 제약으로 인해 ACAO에 ACAO*를 삽입한다.
-> 모든것을 허용한다는 의미
-> SOP의미 퇴색
이를 막기 위해 조건부허락함
-> 타도메인에서 쿠키를 포함해서 요청한 것에는 ACAO*를 삽입하지 못하게함
--> 중요한 정보는 쿠키(SESSION ID 등 때문) 포함하여 요청을함 EX) 마이페이지
ACAO우회를 위해 request페이지에 origin헤더에 다른 데이터를 넣어서 보냄
-> 만약 응답에 ACAO 헤더의 정보가 내가 바꾼 origin데이터가 나타나면 내 서버로 연결해서 침투 가능
이 헤더가 TURE이면 쿠키를 포함한 정보 요청이다.
둘다 HTTP Header
클라이언트가 서버에 요청을 보낼때 요청의 출처를 나타냄
| Referer | Origin | |
|---|---|---|
| 포함 정보 | 전체 URL | 프로토콜 호스트 포트만 |
| example | https://www.a.com/a.php | https://www.a.com |
| 용도 | 페이지간 이동 추적/ 리소스 로드 출처 확인 | CORS와 같은 보안쪽에서 주로 사용 |
| 위험도 | 더 많은 정보를 포함하여 보다 더 위험 -> 비활성화 가능 | 정보가 보다 제한적이라 덜 위험 |