Как безопасно хранить учетные данные за сеанс во Flask - PullRequest
13 голосов
/ 15 сентября 2011

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

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

Один из найденных вариантов: Flask-KVSession , в котором хранятся переменные сеанса на стороне сервера.


Обновление: Втестируя, я экспериментировал с опусканием учетных данных в dict в app.config, когда пользователь входит в систему. Кажется, это должно быть плохой идеей, но я пока не понял, почему.Я знаю, что это создает возможность исчезновения учетных данных для активного сеанса, но достаточно легко увидеть, существуют ли они, и снова запросить их, если их нет.Кроме того, они не будут записываться в файловую систему, как переменные в сеансах на стороне сервера.

Я хотел бы знать, если я упускаю какие-либо очевидные проблемы с этим подходом.

1 Ответ

12 голосов
/ 17 сентября 2011

Я бы определенно использовал что-то вроде Flask-KVSession для хранения учетных данных пользователя в сеансе на стороне сервера (+1 за это - я не видел этого расширения раньше). Это гарантирует, что вы не передаете учетные данные пользователя в cookie-файле. Я бы добавил Flask-Login, чтобы разобраться с более интересными частями управления сеансами, не обнаруживая все проблемы самостоятельно.

Удаление учетных данных в app.config не очень хорошая идея, потому что app.config не является LocalProxy и, следовательно, не является поточно-ориентированным, Вам не гарантируется, что изменения, внесенные вами в app.config для одного запроса, не окажут влияние на другие запросы. (Вы можете узнать больше о контекстных локалях здесь и здесь ).

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