Web/Node.js
생활코딩_Node.js) cookie 암호화
surhommejk
2018. 8. 3. 14:56
cookie에 저장하는 정보가 민감하고 private 한 정보라면 암호화할 필요성이 있다.
개발자 도구에서 cookie를 눌러보면 정보가 다 보이기 때문이다.
물론, jsp를 배울때도 마찬가지고 node.js를 배울 때도 마찬가지고 사실 민감한 정보 자체를 cookie에 저장할 일은 없는데
항상 괜히 session을 배우기 전에 cookie를 배우면서 이런 개념을 알려준다(어느 인강이나 비슷한 것 같다)
아무튼 암호화 자체도 스프링보다 훨씬 가볍고 쉬웠다
암호화 전
암호화 후
cookie의 값을 보안상의 이유로 암호화 할 수 있는데 방법은 다음과 같다.
const express = require('express');
const cookieParser = require('cookie-parser');
const app = express();
// cookieParser의 파라미터로 암호화에 사용할 Key값을 임의로 입력
app.use(cookieParser('12354dssa#@!%#!'));
app.get('/count',function(req, res){
let count;
// req.cookies.count => req.signedCookies.count 로 변경
if(req.signedCookies.count){
// cookie 에서 가져오는 값은 모두 String type이 디폴트
count = parseInt(req.signedCookies.count);
} else{
count = 0;
}
count += 1;
// cookie 생성시에도 세 번째 파라미터로 {signed:true}를 넣어주어 암호화 한다
res.cookie('count', count, {signed:true});
res.send('count : ' + count);
});
app.listen(3000, function(){
console.log('Connected!');
});
1. 미들웨어 장착시 파라미터에 암호화에 사용할 key 값을 넣는다
// cookieParser의 파라미터로 암호화에 사용할 Key값을 임의로 입력
app.use(cookieParser('12354dssa#@!%#!'));
2. cookie를 read시에 req.signedCookies.keyname으로 꺼내온다
// req.cookies.count => req.signedCookies.count 로 변경
if(req.signedCookies.count){
// cookie 에서 가져오는 값은 모두 String type이 디폴트
count = parseInt(req.signedCookies.count);
} else{
count = 0;
}
3. cookie를 생성 할 때에 세 번째 파라미터로 {signed: true} 를 넣어준다
// cookie 생성시에도 세 번째 파라미터로 {signed:true}를 넣어주어 암호화 한다
res.cookie('count', count, {signed:true});