Cross-Site와 Same-Site 속성

wellsbabo·2023년 7월 13일
0
post-thumbnail

Cross-Site: 쿠키의 도메인이 사용자 주소 표시줄에 표시된 주소가 아닌 다른 주소인 경우(Third-party)

Same-Site 속성은 서드파티 쿠키의 보안적 문제(CSRF 공격)를 해결하기 위해 만들어진 기술로, Cross-site로 전송하는 요청의 경우 쿠키의 전송에 제한을 두도록 하는 것입니다.

Same-Site의 정책으로는 3가지의 종류가 있습니다.

1) None: Same-Site가 없을 때와 동일하게 동작합니다. None으로 설정된 쿠키는 크로스 사이트의 요청에도 항상 전송이 되고, 보안적으로도 똑같이 문제가 있습니다.

2) Strict: 가장 강력한 정책으로, 크로스 사이트의 요청에는 어떠한 것도 전송되지 않습니다. 즉 퍼스트파티 쿠키만 전송합니다.

3) Lax: Strict보다는 느슨한 정책으로, 크로스 사이트의 요청에도 몇 가지 예외적인 요청에는 전송이 됩니다.

Lax가 크로스 사이트의 요청에도 전송되는 경우

1. 같은 웹사이트인 경우(퍼스트파티 쿠키)

2. Top Level Navigation(웹 페이지 이동)인 경우

  • Top Level Navigation에는 유저가 링크를 클릭("<a>")하거나, window.location.replace 등으로 인해 자동으로 이뤄지는 이동, 302 리다이렉트를 이용한 이동이 포함됩니다.
  • <iframe>이나 <img>를 문서에 삽입함으로서 발생하는 HTTP 요청은 Navigation이라고 할 수 없기 때문에 Lax 쿠키가 전송되지 않습니다.
  • <iframe>안에서 페이지를 이동하는 경우는 Top Level이 아니기 때문에 Lax 쿠키를 전송하지 않습니다.

3. 안전한 HTTP 메서드 요청

  • POST나 DELETE 요청의 경우 서버의 상태를 수정할 수 있기 때문에 안전하지 않은 요청이므로 Lax 쿠키가 전송되지 않습니다.
  • GET처럼 서버의 상태를 바꾸지 않고 조회만 하는 요청에는 Lax 쿠키가 전송됩니다.

First-Party Sets

위에서 나온 SameSite 옵션으로 인해 차단될 서드파티 쿠키의 기능을 어느정도 보완하기 위해 제안된 표준입니다.
예를 들어 같은 회사에서 운영하는 사이트더라도 각 사이트의 기능, 제공하는 서비스, 국가 등에 따라 도메인이 달라질 수 있습니다.
이러한 상황에서 서로 쿠키를 주고받고 싶은데 서드파티 쿠키로 인식되어 차단된다면 제공되는 서비스에 큰 차질이 생길겁니다.
이것을 해결하기 위해 서로 같은 사이트라고 선언되어진 것들은 브라우저에서 같은 도메인으로 인식하여 쿠키를 주고 받는 것을 허용하는 것입니다.

구글에서 제안했지만 아직 채택되지는 않은것으로 보입니다...


아래 거인(고수)들의 도움을 매우매우 많이 받아서 작성한 글입니다.
참고링크 1
참고링크 2
참고링크 3

0개의 댓글