본문 바로가기

웹/보안

세션(Session) 관리 방법, 취약점 및 대응방안

!!!잘못된 정보 발견 시 댓글로 알려주시기 바랍니다!!!

 

쿠키 & 세션 

HTTP의 약점을 보완하기 위한 장치

Connectionless, Stateless 프로토콜이라 서버가 Response를 보내고나서 연결을 끊어버린다. 나중에 동일 클라이언트가 다시 요청해도 서버는 알 수 없다.

 

쿠키 : 서버가 발급해주는 쿠키를 클라이언트에 key-value로 저장해서 연결이 끝난 후 재 접속 시 인증정보로 사용한다.

 - Session Cookie : 만료시간 설정 가능, 메모리에만 저장됨, 브라우저 종료시 쿠키 삭제됨

 - Persistent Cookie : 장기간 유지되는 쿠키, 파일로 저장되어 브라우저를 종료해도 남아있음

 - Secure Cookie : HTTPS에서만 사용가능, 쿠키정보가 암호화되어 전송

세션 : 서버가 클라이언트의 상태를 유지해주기 위해 클라이언트의 인증정보를 서버에 저장해둔다. 

 

쿠키만 사용하는 경우 클라이언트의 인증을 위해선 계정정보가 포함될 수 밖에 없다. 패킷에 평문으로 노출되는데 비밀번호가 포함되어 있다면 여러 경로로 노출될 수 있고, 포함되어있지 않다면 다른 사용자가 추측을 통해 계정을 탈취할 수 있는 가능성이 존재한다.

-> 둘다 사용해야 좋다

 

 

 

동작방식

1. 클라이언트가 서버에 페이지를 요청한다. (로그인페이지 혹은 인증 이후 페이지)

2. 서버는 응답에 세션 객체와 SessionID를 지닌 세션쿠키를 생성하여 클라이언트에 전달한다.

3. 요청/응답 이후 서버와의 연결은 종료되지만 클라이언트의 세션쿠키는 브라우저의 메모리에 저장된다.

 

4. 클라이언트는 서버에 재 요청 시 세션쿠키를 포함하여 자신이 해당 Session ID와 매핑된 사용자임을 증명한다.

5. 서버는 Session ID에 해당하는 세션 객체를 자신의 메모리 영역에서 찾고 사용자의 권한에 따라 응답을 발생시킨다.

6. 클라이언트는 쿠키가 만료되거나 브라우저를 닫을때 제거하고, 서버는 세션 만료시간이 지나면 제거한다.

 

 

 

서버에서의 세션 관리

일반적인 세션관리

 ** 구현해보고 필요한대로 캡쳐해서 넣기 

PHP

https://merona99.tistory.com/99

 

 

JSP

 

ASP

 

 

 

DB를 이용한 세션관리

 

 

 

 

 

 

 

분산 세션 서버

https://technet.tmaxsoft.com/upload/download/online/jeus/pver-20140827-000001/session/chapter_session_tracking.html

 

 

 

 

 

 

 

보안 - 권한체크

보안 - 세션 타임아웃

보안 - 중복로그인

 

 

 

' > 보안' 카테고리의 다른 글

SQL 인젝션 정리 (2) : DB2  (0) 2019.11.13
XSS 특이케이스  (0) 2019.10.31
워드프레스 진단 시 요청 시도 할 API  (0) 2019.10.24
JWT(Json Web Token)  (0) 2019.10.24
파일업로드 필터링 방식 및 우회  (0) 2019.10.24