node JS - 웹 브라우저와 쿠키,세션

Jaa-van·2023년 4월 24일
0
post-thumbnail

웹 사이트 & 브라우저

  1. HTTP => 일반적으로 데이터를 주고 받을 때 사용되는 통신 규약

  2. 웹 브라우저 => HTML 로 이루어진 데이터를 읽어서 화면에 그려주는 역할

  3. 쿠키 => 웹 브라우저의 기술 중 하나,
    보통 상태를 저장하기 위해서 사용한다

                ( 서버에서 쿠키를 구워서 response 에 담아서 웹 브라우저에 보내면
                이를 받아서 그대로 저장 )
                -> 별도의 암호화 없이 데이터를 그대로 주고받아 보안에 취약하다
                
                - http 에서는 프론트엔드가 쿠키를 자유자재로 활용 가능
                - https(sequre) 에서는 활용할 수 없다는 특징이 있다
  4. 세션 => 웹 브라우저의 기술 중 하나,
    쿠키의 특성을 이용한 기술

                ( 자물쇠는 서버에 존재, 인증된 사용자에게는 자물쇠에 대한 열쇠를
                지급해준다 )
                -> 다시 서버를 호출할 경우 자물쇠를 열어 데이터를 사용하게 된다
                
                - 사용자에 대한 정보가 모두 서버에서 관리하게 되기 때문에 
                    서버에 부화가 크다
                 - 서버에서 모든 데이터를 관리하기 때문에 보안적으로 좋다
  5. 서버 프로그램 => 클라이언트에게 요청을 받아 응답해주는 프로그램의 유형
    ex) app.js 에 서버를 구현하고 실행했다면 이 자체가 서버 프로그램이 된다

  6. 서버 컴퓨터 => "서버 프로그램"을 실행하고 있는 컴퓨터

@express 에 대한 이해

  1. express 를 이용해 서버를 만들 수 있다
  2. 미들웨어 의 개념을 이애할 수 있다
  3. "정적 파일" 을 제공할 수 있다
    -> 변하지 않는 파일, 서버에서 파일 내용을 변형하지 않고 클라이언트에게 그대로 전달하기 위한 목적이 있는 파일 ( 미들웨어를 이용해 가능 )
  4. 라우터를 이용해 Method 와 HTTP 요청을 받아 처리하는 방법을 공부한

@쿠키

=> 브라우저가 서버로부터 응답으로 Set-Cookie 헤더를 받은 경우 해당 데이터를 저장한 뒤 모든 요청에 포함하여 보낸다

사용자의 정보 전체를 저장해 보내기 때문에 사용자 정보 전체가 노출될 수 있

res.cookie ( '쿠키의 이름', '쿠키의 값', {
expires : expires
})

  • 클라이언트 서버는 req를 보낼 때 자신이 보유하고 있는 쿠키를 자동으로 서버에 전달한다.
    -> 일반적으로 req.headers.cookie 에 들어있다

요청에 추가된 쿠키를 req.cookies 객체로 만들어준다
-> ( req.headers.cookie 처럼 길게 사용하지 않아도 된다 )

npm i cookie-parser //이후
const cookieParser = require("cookie-parser") // 를 추가하고
app.use(cookieParser()) // 이렇게 사용한다

쿠키는 서버를 재시작하거나 새로고침을 해도 로그인이 유지된다
-> 사용자 입장에서는 편하지만, 서버의 입장에서 보안에 취약하다

@세션

=> 쿠키를 기반으로 구성된 기술
세션은 데이터를 서버에만 저장한다

서버에 저장된 데이터를 확인할 수 있는 열쇠를 할당한다
-> 이 열쇠를 바탕으로 데이터를 열람해서 사용한다

매번 DB 에 접근해서 데이터를 가져와야 하기 때문에 서버 부하가 늘 수 있다

  1. /set-session api 를 호출했을 때 name=sparta 를 서버에 저장하고 저장한 정보에 시간 정보를 쿠키로 반환받는 API
  2. /get-session api 를 호출했을 때 쿠키의 시간 정보를 이용하여 서버에 저장된 name 을 호출하는 API
    이렇게 두개의 API 를 연동하여 세션을 활용한다

0개의 댓글