HTTP => 일반적으로 데이터를 주고 받을 때 사용되는 통신 규약
웹 브라우저 => HTML 로 이루어진 데이터를 읽어서 화면에 그려주는 역할
쿠키 => 웹 브라우저의 기술 중 하나,
보통 상태를 저장하기 위해서 사용한다
( 서버에서 쿠키를 구워서 response 에 담아서 웹 브라우저에 보내면
이를 받아서 그대로 저장 )
-> 별도의 암호화 없이 데이터를 그대로 주고받아 보안에 취약하다
- http 에서는 프론트엔드가 쿠키를 자유자재로 활용 가능
- https(sequre) 에서는 활용할 수 없다는 특징이 있다
세션 => 웹 브라우저의 기술 중 하나,
쿠키의 특성을 이용한 기술
( 자물쇠는 서버에 존재, 인증된 사용자에게는 자물쇠에 대한 열쇠를
지급해준다 )
-> 다시 서버를 호출할 경우 자물쇠를 열어 데이터를 사용하게 된다
- 사용자에 대한 정보가 모두 서버에서 관리하게 되기 때문에
서버에 부화가 크다
- 서버에서 모든 데이터를 관리하기 때문에 보안적으로 좋다
서버 프로그램 => 클라이언트에게 요청을 받아 응답해주는 프로그램의 유형
ex) app.js 에 서버를 구현하고 실행했다면 이 자체가 서버 프로그램이 된다
서버 컴퓨터 => "서버 프로그램"을 실행하고 있는 컴퓨터
=> 브라우저가 서버로부터 응답으로 Set-Cookie 헤더를 받은 경우 해당 데이터를 저장한 뒤 모든 요청에 포함하여 보낸다
사용자의 정보 전체를 저장해 보내기 때문에 사용자 정보 전체가 노출될 수 있
res.cookie ( '쿠키의 이름', '쿠키의 값', {
expires : expires
})
요청에 추가된 쿠키를 req.cookies 객체로 만들어준다
-> ( req.headers.cookie 처럼 길게 사용하지 않아도 된다 )
npm i cookie-parser //이후
const cookieParser = require("cookie-parser") // 를 추가하고
app.use(cookieParser()) // 이렇게 사용한다
쿠키는 서버를 재시작하거나 새로고침을 해도 로그인이 유지된다
-> 사용자 입장에서는 편하지만, 서버의 입장에서 보안에 취약하다
=> 쿠키를 기반으로 구성된 기술
세션은 데이터를 서버에만 저장한다
서버에 저장된 데이터를 확인할 수 있는 열쇠를 할당한다
-> 이 열쇠를 바탕으로 데이터를 열람해서 사용한다
매번 DB 에 접근해서 데이터를 가져와야 하기 때문에 서버 부하가 늘 수 있다