CORS는 응답서버 측에서 해당 요청이 정상적인 요청인지를 확인해주는 역할을 한다.
내가 SOP가 XSS를 막을 수 없다고 생각한 이유는 Access-Control-Allow-Origin의 발행주체가 서버이기 때문이다. 정보를 수집하는 Attacker의 서버가 Access-Control-Allow-Origin : * 설정을 해버리면 사용자 브라우저는 CORS 에러를 발생시키지 않는다.
일반적으로 XSS는 정상 사이트 내에 공격자가 악의적인 스크립트를 삽입하는데, 정상 사이트로부터 스크립트를 로드하는 것은 SOP와는 관련이 없다. 그렇기 때문에 웹페이지 내에 삽입된 악성코드는 브라우저에 로드되고 악의적인 행위를 수행할 수 있다.
SOP가 공격을 막아줄 수 있는 시나리오는 아래와 같다.