비 연결적인 특성으로 연결이 해제됨과 동시에 서버와 클라이언트는 클라이언트가 이전에 요청한 결과에 대해 잊어버리게 된다. 따라서요청을 할 때마다 서버에 연결을 해야한다.
HTTP의 이러한 특성으로 인해 'Stateless Protocol'이라고 불리기도 하며 웹사이트는 매 페이지에서 로그인이 되어있는 상태인지 확인하는 로그인 인증 방식이 필요하다.
Session Login
Session: 방문자가웹서버에 접속해 있는 상태를 하나의 단위로 보는 것 웹서버는 이러한 각 단위에세션 Id를 부여하고 같은 브라우저인지 구별 브라우저를 닫거나 서버에서 이 (세션 Id가 들어있는)쿠키를 삭제 했을 때 삭제 session을 사용한다고 해서 cookie를 안쓰는 것은 아님. 다만, cookie가 탈취 되더라도 의미없는 문자열인 세션 Id가 들어있다.
Session Login 방식
클라이언트가 서버에게 로그인 정보가 들어있는 파라미터와 함께 login을 요청
서버에서 login 인증을 하고 정보가 올바르면 세션 객체를 생성하고 세션 Id를 Set-cookie를 통해 클라이언트에게 전달
세션 객체는서버에 저장
클라이언트가 서버에 작업을 요청할 때 요청 헤더에 세션 Id가 담긴 쿠키 전달
서버에서는 클라이언트로부터 받은 쿠키에 세션 Id를 확인해서 세션 객체를 검색하고 정보가 있으면 요청한 작업에 대해 응답해주고 통신을 종료
장점
• 쿠키방식과 동일하지만 아무런 의미가 없는 세션 Id가 저장이 되므로 탈취되더라도 해석할 수 없다.
단점
• 해커가 중간에 가로채서 훔친 쿠키로 HTTP 요청을 보낼 수 있는 하이재킹 공격을 당할 수 있다.
해결법 (1)HTTPS를 사용해 요청 자체를 탈취해도 안의 정보를 읽기 힘들게 한다. (2) 세션에 유효시간을 넣어 유효시간이 끝나면 더이상 해커가 이용할 수 없게 한다.
•서버에 세션 객체를 저장해놓기 때문에 사용자가 다수일 경우 부하가 높아진다.
• 확장 시 모든 서버가 접근할 수 있도록 별도의 중앙 세션 관리 시스템이 필요하다.
• 확장성이 좋지 않다. (여러 대의 서버 컴퓨터를 추가할 경우 각 서버마다 세선 정보가 저장되기 때문에)
•CORS: 웹 어플리케이션에서 세션을 관리할 때 자주 사용되는 쿠키는단일 도메인 및 서브 도메인에서만 작동하도록 설계되어 있다. 따라서 쿠키를 여러 도메인에서 관리하는 것은 번거롭다.
JWT Login
JWT:JSON Web Token, 전자 서명 된 URL-safe (URL로 이용할 수 있는 문자)의 JSON