0

在 Flask 中接收到 GET 请求后,我连接到后端数据库并发送响应。目前,数据库的用户名和密码存储在一个ini文件中。加密用户名和密码的最佳方法是什么?为 REST 调用加密用户名和密码也是一种好习惯吗?因为我每次收到请求时都需要解密

4

2 回答 2

1

您永远不会在数据库中存储纯密码。相反,您想要存储哈希值——特殊的总和,它不能被解码,但会在相同的数据上产生相同的结果。
因此,您可以将此功能应用于普通密码并将其与数据库中的密码进行比较

看看bcrypt模块: https ://flask-bcrypt.readthedocs.io/en/latest/

在您的注册方法上:
pw_hash = bcrypt.generate_password_hash('some_password')

然后你只在你的数据库中存储 pw_hash

在您的登录方法中,只需pw_hash从 db 中提取并进行比较:
bcrypt.check_password_hash(pw_hash, 'password_from_request') # returns True or False

同时,您可以根据需要将纯用户名存储在数据库中,没有任何问题

于 2020-07-21T08:39:36.920 回答
0

在您的服务器上,您不能加密用户名和密码来访问您的数据库,否则您无法访问它。

通常,您不会将它们放在文件中,而是放在环境变量中。

另请参阅十二因素应用程序:

https://en.wikipedia.org/wiki/Twelve-Factor_App_methodology

PS:例如,我batou用于部署(类似于 Ansible)。

用户名和密码都在一个 gpg 文件中加密,所以我可以将它们检查到版本控制中。但是,当然,当我将应用程序部署到生产环境时,这两个值都需要不加密。

https://batou.readthedocs.io/en/stable/

于 2020-07-21T10:48:36.247 回答