sm 기술 블로그
[스프링부트] 로그인시 쿠키(Cookie)를 안쓰고 세션(HttpSession)을 사용하는이유 본문
쿠키(Cookie)
하이퍼 텍스트의 기록서의 일종으로서 인터넷 사용자가 어떠한 웹사이트를 방문할 경우 그 사이트가 사용하고 있는
서버를 통해 인터넷 사용자의 컴퓨터에 설치되는 작은 기록 정보 파일
다음과 같이 클라이언트가 요청을 보내면 서버가 쿠키에 정보를 저장해서 클라이언트에게 보낸다.
이후 클라이언트는 동일한 서버와 재통신을 할 경우에 쿠키에 저장된 데이터를(Superpil) 함께 서버로 전송한다.
HttpSession
쿠키를 안쓰고 세션을 사용하는 이유
쿠키는 정보를 암호화 저장된 정보를 있는 그대로 전부 보여준다.. (순수한 아이다;;)
때문에 어떤 나쁜 분이 쿠키에 있는 정보를 조작하여 악의적으로 사용이 가능하다.
예를 들어, 쿠키를 이용하여 로그인 정보를 받는다고 하면 아래와 같이 표시한다.
현재 2번으로 로그인을 했다.
있는 그대로 내가 2번이다 라는 것을 보여주고 있다.
이 2를 만약 4로 고치면?
자 바로 나는 4번이야~ㅎㅎ 로 보여준다.
그렇다 2번으로 로그인했지만 4번에도 접근이 가능하게 된 슈퍼유저가 된것이다.
이는 누구라도 수정이 가능하기 때문에 보안에 매우매우 취약하다.
하지만 Session은 다르다.
몇번으로 로그인했는지 보이는가?
절대 맞출 수 없다.
로그인한 유저에 대한 정보를 알 수 없기 때문이다. 물론 JSESSIONID에 정보가 있지만 이는 물리적인 접근 없이는 조회가 불가능하고
조회 한다 한들 암호화로 인해 정보를 얻어내기는 쉽지 않다.
따라서 보안상 쿠키가 아닌 세션을 사용하는 것이다.
'스프링부트' 카테고리의 다른 글
[스프링부트] @JsonIgnore (0) | 2022.07.17 |
---|---|
[스프링부트] HttpServletRequest, HttpServletResponse (0) | 2022.07.17 |
[스프링 부트] 에러 모음 (0) | 2022.07.14 |
[스프링 부트] CascadeType.REMOVE (0) | 2022.07.14 |
[스프링 부트] 폰트적용 (0) | 2022.07.13 |
Comments