본문 바로가기

Local Oriented/HTML CSS JS

동일 사이트 내에서의 SameSite 문제 유감

동일 사이트 내부를 통해,

https 에서 http 로 전환할 때는 쿠키와 세션 관계가 유지,

http 에서 https 로 전환할 때는 쿠키와 세션 관계가 끊김(동일 사이트 내에서 이러고 있음).

(2021.06.04 현재 기준. 향후 또 어떻게 바뀔지 누가 알랴..)

 

예를들어 http://abc.com/a.jsphttps://abc.com/b.jsp 호출시,

a.jsp 에서 세팅한 세션 정보가 b.jsp 에서 참조되지 않음.

만약, https://abc.com/a.jsphttp://abc.com/b.jsp 호출시,

a.jsp 에서 세팅한 세션 정보는 b.jsp 에서 참조할 수 있음.

 

동일 사이트 내에서의 http 와 https 전환임에도

이런 문제가 발생하는 것은,

크롬이나 동일 소스코드를 가져다 사용하는

모든 웹브라우저들이 잘못 하고 있는 것으로 보임.

다른 사이트들 과의 관계에선

현행 SameSite 이슈가 당연한 것이라고 생각하고는 있지만..

 

http 에서 https 로 전환시

세션 정보가 유지되지 않으므로,

http 의 hidden input 에 파라미터 형식으로 담아서

https 에 전달해 주는 방식이면 오류 해결.

 

다만, 파라미터로 전달되는 내용이

보안상 문제가 있다면,

http 에서 DB 에 저장하고

저장된 DB 의 unique 키만

https 화면으로 hidden input 파라미터를 전달.

https 에서 unique 키로

DB 에서 읽어 들인 다음 

https 상의 세션에 넣는 것도 방법.

이 때의 unique 키는, 쉽게 염출 가능한 키값이면 곤란.

 

그러나 이런 방법도..

https 에서 http 로 간 다음,

다시 https 로 넘어가는 경계에서 세션이 유지되지 않음.

 

http 화면에서

https ajax 호출시, 호출되는 ajax 에서도 http 화면의 세션값이 전달되지 않음.

따라서, https 로 ajax 호출해야 할 때 http 화면을 https 화면으로 바꾸어야 함.

http 화면을 https 화면으로 바꾸지 못한다면,

http 화면에서 세션에 값을 넣고,

http ajax 호출해서 ajax 호출되는 .jsp 에서 세션값을 참조.

 

 

.Fine.