Какова точная разница между Signcookies и unsignedcookies в nodejs? - PullRequest
0 голосов
/ 03 февраля 2019

Привет всем, кто я новичок в Nodejs.Я попробовал модуль cookie-parser в экспрессе. Они устанавливают подписанный файл cookie, используя {signature: true}.

Прежде всегоуточните мне.

1. Почему мне использовать подписанный файл cookie

2.Что такое использование подписанного cookie ?.

Я проверил решения, но никто не сказал, для чего он нужен.

Я пробовал оба случая отдельно в программе, и я не получил никакой ошибки, поскольку не использовал секретный ключ и подписанный файл cookie:

Любая помощь будет признательна Спасибо заранее ...

Код узла:

  1. с использованием подписанных файлов cookie с секретным ключом

app.use(cookieparser("Youcansetanydataasasecret"));
const options={
    maxAge:1000*60*5,
    httpOnly:true,
    signed:true
};
app.get('/setcookie',(req,res)=>{
    res.cookie('cookieone','This is my first cookie',options);
    res.send(`Cookie has been set...`);
});
app.get('/readcookie',(req,res)=>{
    console.log(req.signedCookies['cookieone']);
    res.send(req.signedCookies['cookieone']);
});
без использования подписанных куки и секретов.

app.use(cookieparser());
const options={
    maxAge:1000*60*5,
    httpOnly:true,
};
app.get('/setcookie',(req,res)=>{
    res.cookie('cookietwo','cookie may different',options);
    res.send(`Cookie has been set...`);
});
app.get('/readcookie',(req,res)=>{
    console.log(req.cookies)
    res.send(req.cookies.cookietwo);
});

1 Ответ

0 голосов
/ 04 февраля 2019

После того, как сервер отправит файл cookie клиенту, клиент может изменить файл cookie, прежде чем отправить его обратно на сервер в будущем запросе.Иногда это безвредно, иногда это может потребоваться приложению, но иногда важно, чтобы файл cookie, отправляемый клиентом, не отличался от своего исходного значения, определенного сервером.(Представьте себе файл cookie, который содержит имя пользователя, номер банковского счета, денежную сумму или счет в игре. Подделка этих файлов может нарушить безопасность сервера или позволить некоторую кражу или мошенничество.)

Если серверу необходимобыть в состоянии обнаружить, что cookie не был изменен клиентом, сервер может включить подпись как часть cookie вместе с фактическими данными cookie, которые должны быть защищены.Подпись получена из данных cookie и секрета, который известен только серверу.Из-за этого секрета клиенту, который изменяет данные, очень трудно создать правильную подпись, чтобы идти по измененным данным.Файл cookie с такой подписью - это то, что модуль синтаксического анализа файлов cookie называет подписанным файлом cookie .

. Когда подписанный файл cookie отправляется обратно на сервер, сервер может проверить, что подпись иданные в cookie соответствуют друг другу.Если они совпадают, то сервер может быть уверен, что данные являются подлинными.Если они не совпадают, сервер знает, что файл cookie был изменен клиентом, и сервер может отклонить запрос.

Таким образом, вы будете использовать подписанный файл cookie, если хотите убедиться, что возвращаемые данныев cookie не было изменено клиентом.Если данные в файле cookie не являются ценными, и вам все равно, будет ли он изменен клиентом, или если вы договорились использовать какой-либо альтернативный механизм для проверки содержимого файла cookie, вам не нужно использоватьподписанный файл cookie.

Обратите внимание, что простое подписывание файлов cookie не защищает от всех способов, которыми клиент может попытаться обмануть сервер.В частности, подпись не защищает от повторных атак.Также обратите внимание, что для сервера очень плохая идея отправлять конфиденциальные данные клиенту вообще.Пример, который я привел, вставив номер банковского счета в файл cookie, только для иллюстрации этой концепции.Это не то, что должно делать настоящее веб-приложение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...