Який "секретний" варіант сеансу?


111

Я нічого не знаю про криптографію. Мені цікаво, у чому секрет сеансу.

Я бачу такий код:

app.use(express.session({
  store: mongoStore({
    url: app.set('db-uri')
  }),
  secret: 'topsecret'
}));

У чому секрет і чи варто його змінити?

Відповіді:


83

Так, ви повинні це змінити. Секретний секрет при підключенні просто використовується для обчислення хешу . Без рядка доступ до сеансу був би заборонений. Погляньте на підключення документів , які повинні трохи допомогти.


43
Ви можете не тільки змінити її, але й змінити її.
Майкл Міор

1
@MichaelMior, як часто?
FRD

9
@FRD Моя точка в тому , що ви не повинні зберегти значення за замовчуванням що - щось на зразок topsecret. Секретом має бути випадковий рядок символів. В ідеалі ви також періодично змінюватимете її, якщо вона була виявлена. Однак для цього потрібна підтримка таємної ротації, щоб ви не одразу визнавали недійсними існуючі сеанси. Тобто, два секрети сеансу слід вважати дійсними одночасно. Наскільки мені відомо, наразі Express не підтримує обертові секрети.
Майкл Міор

7
@MichaelMior експрес-сесія з 1.11.0 підтримує таємну ротацію. З документів: "Якщо надано масив секретів, для підпису файлу cookie сеансу ідентифікатора буде використаний лише перший елемент, тоді як усі елементи будуть враховані під час перевірки підпису в запитах." (Докладні відомості див. У експресі / сесія № 127. )
Вольфганг

Це те ж саме, що і підписане печиво, якщо так .. чи потрібно це робити:res.cookie('name', 'value', {signed: true})
Мухаммед Умер

22

Секрет використовується для хешування сеансу з HMAC:

https://github.com/senchalabs/connect/blob/master/lib/middleware/session.js#L256

Потім сеанс захищається від викрадення сеансу, перевіряючи відбиток пальця на хеш із секретом:

https://github.com/senchalabs/connect/blob/master/lib/middleware/session.js#L281-L287


3
Як хеш захищає від викрадення сесії? Якщо зловмисник має файли cookie сеансу, то хіба вони теж не мають хеш? Якщо у зловмисника немає файлу cookie, то як секретний хеш ускладнює здогадки (проти просто довшого випадкового ідентифікатора сеансу)?
Стюарт П. Бентлі

8
секрет - це сіль для хешу, це просто ускладнює комусь: 1. розшифрувати фальшиве файли cookie, 2. підробляти сеанс, видаючи себе за користувача, оскільки у них немає секрету (солі), який вони не можуть створити належний ідентифікатор сеансу.
mattdlockyer

7
Обидва ці посилання є недійсними, оскільки це 3-річна відповідь.
trysis

5
@mattdlockyer Це не захищає вас від викрадення сеансів. І чому зловмисник намагається розшифрувати файл cookie? Якщо зловмисник має файли cookie, він / вона вже має повний доступ до завершення сеансу. Я маю на увазі, це не так, як люди зберігають пароль свого користувача у файлі cookie, це було б смішно. Таких речей, як jwt, майже завжди слід уникати.
Форивін

Здається, що відповіді щодо мети секрету сеансу є неоднозначними. Деякі кажуть, що це захищає від викрадення сеансу, а інші не згодні. Чи може хтось пояснити, яка реальна мета створення цього хешу? Саме для чого він обчислює хеш?
nawK

-9

секретний ключ, в основному використовується для шифрування даних в сеансі


8
Ні, це не так. Дивіться прийняту відповідь від 6 років тому.
Квентін
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.