Приложение может предоставить serializeUser
и deserializeUser
.
Приложение должно иметь возможность безопасно выполнять deserializeUser
, потому что они могут проверять каждый полученный им хэш (установить и прочитать с помощью промежуточного программного обеспечения для паспорта через request.session
; я думаю, что ответственными частями могут быть эти: https://github.com/expressjs/session/blob/master/index.js#L160 и https://github.com/jaredhanson/passport/blob/master/lib/sessionmanager.js#L18-L25 (или на последнем поддерживаемом форке, https://github.com/passport-next/passport/blob/master/lib/sessionmanager.js#L21-L28)) против карты, которую они сохранили в своей локальной базе данных / файле / сервисе, предварительно связав и сохранив такие хеши пользовательских сеансов вместе с именем пользователя (и / или другой конкретной информацией о сеансе).
Приложению не нужно хранить пароли на сервере в виде необработанного текста, что, по-моему, является главной проблемой, поскольку открытый сервер предоставит хакерам не только свои данные для этого сайта, но и пароли пользователей, которые часто используются на других сайтах. , И хеширование имени пользователя несколько лучше для конфиденциальности, так как кто-то, проверяющий куки пользователя на наличие старого хеша сессии, даже не узнает, кем он является.
И не должно быть проблем безопасности с установкой промежуточного программного обеспечения для каких-либо объектов сеанса в объекте запроса, поскольку выбор и последовательность промежуточного программного обеспечения находятся под контролем приложения и не передаются по сети.