2017年4月6日 星期四

[NODEJS] COOKIE的使用

在網站裡常會使用一些cookie來對使用者所瀏覽的資訊做記憶,而這些資訊主要是以不會有安全疑慮的才適合儲存,因為cookie可以透過瀏覽器所觀看到,且容易進行竄改。
要在node.js(EXPRESS框架)中使用cookie,必須先透過npm將cookie模組進行安裝。
npm install --save cookie-parser
接著在程式碼中使用cookie-parser。


var cookieParser = require('cookie-parser');
var app = express();
app.use(cookieParser());
當要設定一個cookie時,使用以下方式:
res.cookie('cookieName', 'cookieValue');
透過瀏覽器觀看,cookie會成功設進去。
cookieName = cookieValue
為了讓cookie安全一點,可以對cookie做簽名(signed),透過此若cookie被竄改,在伺服器端會拒絕這被竄改過的cookie,並將其改回原來的值。
使用時,必須在cookieParser裡面傳入一組密鑰字串(如下以secret代替,可替換其它字串)。
app.use(cookieParser('secret'));
設定cookie時也必須在後面多加上signed的設定。
res.cookie('signedCookieName', 'signedCookieValue', { signed: true });
這樣在瀏覽器所看到的cookie值將不會是原始所設定的值,而是會加上一長串的亂數。
signedCookieName = s%3AsignedCookieValue.gIccWQQAhxDEGoqhNP6KCyjFWZY2AT4F2NDhw5i1H2U
讀取cookie則可以透過下面兩種寫法取得:
req.cookies.cookieName
req.cookies['cookieName']
有簽名的cookie則是以下兩種:
req.signedCookies.signedCookieName
req.signedCookies['signedCookieName']
若要對已設定的cookie進行刪除則使用cleanCookie方法。
res.clearCookie('cookieName');
原文