Seesion 인증

권성현·2023년 4월 7일
0

업무

목록 보기
4/22
post-thumbnail

Session 인증

  • 세션은 비밀번호 등 클라이언트의 민감한 인증 정보를 브라우저가 아닌 서버 측에 저장하고 관리한다. 서버의 메모리에 저장하기도 하고, 서버의 로컬 파일이나 데이터베이스에 저장하기도 한다. 
  • 핵심 골자는 민감한 정보는 클라이언트에 보내지 말고 서버에서 모두 관리한다는 점이다.

Session 인증 방식

  • 유저가 웹사이트에서 로그인하면 세션이 서버 메모리(혹은 데이터베이스) 상에 저장된다. 이때, 세션을 식별하기 위한 Session Id를 기준으로 정보를 저장한다.
  • 서버에서 브라우저에 쿠키에다가 Session Id를 저장한다.
  • 쿠키에 정보가 담겨있기 때문에 브라우저는 해당 사이트에 대한 모든 Request에 Session Id를 쿠키에 담아 전송한다.
  • 서버는 클라이언트가 보낸 Session Id 와 서버 메모리로 관리하고 있는 Session Id를 비교하여 인증을 수행한다.

Session의 장점

장점

  • 어느정도 보안 유지 : 최초 접속 때를 제외하고 SessionID만 사용
  • 큰 허용 용량 : 저장 개수나 용량 제한 없음(서버 용량 충분 시)
  • 서버에 저장되므로 클라이언트의 웹 브라우저에 의존하지 않아도 됨
  • 데이터를 Hash Table에 저장. 한 번에 많은 정보를 하나의 세션 객체에 저장 가능
  • SessionID만 보내므로, 세션의 크기가 커도 네트워크 부하가 거의 없음

Session 방식의 단점

단점

  • 쿠키를 포함한 요청이 외부에 노출되더라도 세션 ID 자체는 유의미한 개인정보를 담고 있지 않는다. 그러나 해커가 세션 ID 자체를 탈취하여 클라이언트인척 위장할 수 있다는 한계가 존재한다. (이는 서버에서 IP특정을 통해 해결 할 수 있긴 하다)
  • 서버에서 세션 저장소를 사용하므로 요청이 많아지면 서버에 부하가 심해진다.
  • 서버(세션) 기반 인증 시스템
  • 서버의 세션을 사용해 사용자 인증을 하는 방법으로 서버측(서버 램 or 데이터베이스)에서 사용자의 인증 정보를 관리하는 것을 의미한다.
  • 그러다 보니, 클라이언트로부터 요청을 받으면 클라이언트의 상태를 계속해서 유지해 놓고 사용한다.
  • (Stateful)이는 사용자가 증가함에 따라 성능의 문제를 일으킬 수 있으며 확장성이 어렵다는 단점을 지닌다.
profile
개발일지

0개의 댓글