[Node.js] 쿠키를 사용하여 JWT 보내기
쿠키
https://www.npmjs.com/package/cookie
cookie
HTTP server cookie parsing and serialization. Latest version: 1.0.2, last published: 3 months ago. Start using cookie in your project by running `npm i cookie`. There are 4732 other projects in the npm registry using cookie.
www.npmjs.com
npm install cookie
먼저 쿠키를 사용하기 위해 npm install cookie로 모듈을 설치해준다.
// jwt 발급
const token = jwt.sign(
{
email: loginUser.email,
name: loginUser.name,
},
process.env.JWT_SIGN
);
// 쿠키에 jwt 포함시킴
res.cookie("token", token);
res.json({
message: `${loginUser.name}님 환영합니다!`,
});
다음은 로그인을 처리하는 코드이다.
사용자가 로그인을 시도하려 할 때 email과 name이 포함된 데이터를 포함하여 서명을 하고 JWT를 생성한다.
그리고 res.cookie()를 통해 토큰을 전달해준다.
Postman을 통해 확인을 해보면 메시지뿐만 아니라, 쿠키까지 함께 전송이 된 것을 확인할 수 있다.
HttpOnly 설정
쿠키는 클라이언트에서 JavaScript로 접근할 수 있기 때문에 XSS(Cross Site Scripting)와 같은 공격에 취약할 수 있다.
그럴 때 HttpOnly 속성을 사용하면 JavaScript로 접근할 수 없게 되어 쿠키가 탈취당하는 문제를 해결할 수 있다.
res.cookie("token", token, { httpOnly: true });
Node.js에서 이를 적용하는 방법은 매우 간단한데, 맨 뒤에 { httpOnly: true}를 추가해주면 된다.
그 결과 아래 사진처럼 HttpOnly가 true로 쿠키가 전송되는 것을 볼 수 있다.