원레 http request는 stateless하다.
즉, 요청과 응답이 돌아오면, 이후로 클라이언트는 서버와의 연결이 끊기므로 서버는 클라이언트를 기억하지 못한다. 이는 리소스를 해제함으로써 서버의 부하를 방지하지만, 로그인처럼 클라이언트의 권한을 서버에서 기억해야 할 때는 다른 방법이 필요하다.
이 때 사용되는 것이 cookie와 session이다.
cookie
쿠키는 클라이언트의 요청에 자동으로 탑재되어 서버로 보내진다. 따라서 여기에 인증 정보를 담아놓을 수 있다.
하지만 보안에 취약하여 탈취 위험성이 크고 용량이 작아서 보안상으로 덜 민감한 간단한 정보만 저장하거나 만료기간을 지정한다.
보통은 사용자가 쿠키를 조작하지 못하도록. 서버의 인증 과정 추가한다
- 서버 세션에 사용자 정보와 연결수단으로서 쿠키를 일시 저장
- 사용자 요청 시 세션 내 쿠키 존재 여부 조회
- HttpOnly와 Secure와 같은 쿠키 옵션
- 최근 브라우저에서는 SameSite 쿠키 속성을 사용하여 CSRF 공격을 방어
코드
서버단에서 getCookies와 for in 문, getName, getValue로 쿠키 검사. 없을 시 new Cookie 부여하거나 리다이렉트
session
여기서 세션이란 클라이언트의 session storage가 아니라 서버 측에서 웹 컨테이너가 생성하는 것을 의미한다.
세션은 쿠키보다 보안상 안전하다.
참고로. session 객체는 jsp 파일의 내장 객체이므로, 선언 없이 바로 사용 가능
코드
requset.getSession()
session.getAttribute()
session.setA
session.invalidate();
사용자와 연결된 세션만 유효하지 않게 만들어 파괴?
'java > jsp & sevlet' 카테고리의 다른 글
JDBC(java와 오라클의 통신 방법) (0) | 2024.05.04 |
---|---|
[jsp&servlet] 인코딩 방식을 통한 한글 깨짐 처리, 정상 출력 (0) | 2024.05.04 |
[jsp&servlet] error page 설정 방법 (0) | 2024.05.04 |
[jsp& servlet] jsp 스크립트, 내장 객체, 요청 응답 (0) | 2024.05.02 |
servlet의 기본 사용법1(request, response, life cycle, form 처리) (0) | 2024.05.01 |