프로그래밍/Node.js

Node.js 생활코딩 정리 – Cookie 암호화

가카리 2016. 12. 1. 21:47
반응형

Cookie 암호화

 

쿠키값을 암호화해보자

 

app.use(cookieParser('키값));에 키값을 넣으면 이 키를 이용해서 암호화한다.

 

req.cookies.count를 req.signedCookies.count로 변경

res.cookie('count', count, {signed:true});로 변경

 

다음과 같이 count와 cart가 암호화가 된다.

 

 

app_cookie_security.js

 

var express = require('express');

var cookieParser = require('cookie-parser');//쿠키 파서 사용

var app = express();

app.use(cookieParser('123afasdfabaf%$#!'));//expressjs API보면 나옴

 

//상품들 리스트 원래는 데이터베이스여야함

var products = {

1:{title:'The history of web 1'},

2:{title:'The next web'}

};

 

//상품들 페이지

app.get('/products', function(req, res){

var output = ``;

for(var name in products){//products 순회하고 싶은 객체

output += `

<li>

<a href="/cart/${name}">${products[name].title}</a>

</li>`;

//console.log(products[name].title);

}

//send html태그를 보냄

res.send(`<h1>Products</h1><ul>${output}</ul><a href="/cart">Cart</a>`);

});

 

/*

카트에 넣을 데이터 형식 선언해봄 제품id:구매한수

cart = {

1:2,

2:1

}

*/

app.get('/cart/:id', function(req, res){

var id = req.params.id;

if(req.signedCookies.cart){//이미 쿠키값이 있다면

var cart = req.signedCookies.cart;

}else{//최초 실행시

var cart = {};

}

if(!cart[id]){//값이 없으면 초기화해줌

cart[id] = 0;

}

cart[id] = parseInt(cart[id]) + 1;//물건의 수량을 증가시킴 쿠키는 기본적으로 문자이므로 parseInt해야됨

res.cookie('cart', cart, {signed:true});

res.redirect('/cart');//이동시 cart페이지로 이동

//res.send(cart);

});

 

app.get('/cart', function(req, res){

var cart = req.signedCookies.cart;

if(!cart){

res.send('Empty cart');

}else{

var output = '';

for(var id in cart){

output += `<li>${products[id].title} (${cart[id]})</li>`;//상품들의 제목들과 수량을 출력해주는 부분

}

}

//편하게 하기 위해 출력해주는 부분

res.send(`

<h1>Cart</h1>

<ul>${output}</ul>

<a href="/products">Products List</a>

`);

});

 

//signedCookies 추가됨

app.get('/count', function(req, res){

if(req.signedCookies.count)//쿠키값이 있다면

var count = parseInt(req.signedCookies.count);//숫자로 강제로 바꿈

else{//쿠키값이 없다면

var count = 0;

}

count = count + 1;//카운트 값을 올리고

res.cookie('count', count, {signed:true});//여기 암호화 추가

res.send('count : '+ req.signedCookies.count);//cookies객체에 count라는 쿠키값을 가져옴

});

 

app.listen(3003, function(){

console.log('Connected 3003 port!!!');

});

 

 

실행 화면

여기서 상품을 클릭하면

상품명 및 (수량)을 출력해준다.

 

 

Products List를 누르면 다시 돌아간다.

 

 

출처 : https://opentutorials.org/course/2136

 

반응형