본문 바로가기

Server Oriented/Java & JSP

크롬에서 로그인시 세션 만료 에러 (iframe 때문?)

크롬의 행보와 매번 부딪히게 되네요..

크롬이 http 를 지양하고, https 를 지향한다는 것은 이미 알려진 사실이구요.

최근에 크롬이 CSRF 를 이유로 iframe 을 사용할 때

세션을 끊어먹는(실제로는 쿠키값을 복사하지 않는) 만행(?)을 저지르고 있습니다.

 

그냥 웹사이트를 https 로만 돌게 하지 왜, 크롬의 만행이라고 하느냐 하면요..

동일 도메인임에도 쿠키값을 복사하지 않아서 그렇습니다. ^^;

나는 전혀 문제 없는데, 왜 문제를 삼느냐구요..?

사실인즉 이렇습니다.

 

예전에는 모든 웹사이트가 http 로 설계되었습니다.

그러다가 보안이 강조되다 보니 (우리나라에선 KISA 의 영향이 크죠),

로그인 부분에 https 를 사용하게 되었구요.

 

그런데, http 화면에서 https 를 사용하다 보니 화면전환이 되어야 하잖아요.

그래서, iframe 안에서 https 를 호출하게 프로그래밍 하는 것이 주류인 시절이 있었죠.

이즈음에 만들어진 사이트들은 이런식이 많았고,

최근에 크롬에서 로그인이 이루어지지 않는다는 웹사이트는 다 이런식으로 설계되었다는 거죠.

 

아무튼, 이걸 해결하기 위해서는 iframe 을 버리라는 겁니다.

http 로 호출된 화면에서 target 을 _self 나 _top 으로 하고 https 를 호출하라는 거죠.

 

최종 모습은 https 로 가는 것이겠죠.

그러나, 이게 서버와 사용자 PC(모바일기기) 그리고.. 네트워크를 많이 잠식합니다.

모든 리소스에 대하여 서버가 https 로 암호화 하여,

암호화 된 리소스가 네트워크를 타고 흐르다가

사용자 기기에서 다시 복호화 한 다음 렌더링 하여 화면에 뿌려지는 겁니다.

보안성은 강화되었지만, 사회적인 비용이 장난 아닙니다.

이를테면, 2D 동영상도 괜찮은데.. 공연히 3D 동영상으로 만들어서 서비스 하는 겁니다.

 

아무튼, 크롬이 https 가 아니면 렌더링을 해 주지 않을 때 까진..

기본 리소스는 http 로, 보안성이 필요한 리소스는 https 를 이용하게 하자구요.

이러면, 개발하는 사람이 피곤해지기는 하지만.. 우리에겐 ajax 가 있잖아요.

다만, ajax 가 살짝 (동일 서버에서 서비스 하더라도) 느리긴 하죠. ㅠ.

 

 

-----------------------------------------------------------

2021.03.09 http 화면에서 ajax 로 https 호출하여 세션 세팅하고 http 화면으로 되돌아 오면, https 에서 생성된 세션이 복사되지 않기 때문에 또 세션이 끊기는군요.. ㅠ