首页 > 解决方案 > 远程连接到 MongoDB 数据库而不以明文形式存储密码

问题描述

我正在尝试远程连接到 MongoDB 数据库,但不想在代码中以明文形式存储数据库的密码。什么是加密/解密密码的好方法,因此任何拥有源代码的人都无法使用它?源代码将在 GitHub 上。

我正在使用 Python 和 PyMongo 来连接数据库。数据库在 mongod.conf 文件中启用了身份验证。该数据库托管在 AWS 中运行的 Ubunutu 18.04 实例上。

将服务器的 IP 地址加密也很好,因为我之前在人们访问数据库时遇到了安全问题,因为代码在 GitHub 上可用,然后可能被机器人抓取。

我当前的 URI 看起来像这样

URI = "mongo serverip --username mongo --authenticationDatabase admin -p"

我希望以某种方式加密 IP 地址和密码,以便密码和 IP 在源代码中不公开。

标签: pythonmongodbencryptionpymongopassword-protection

解决方案


只有简单的方法:

如果您不希望密码和服务器名称包含在您的公共存储库中,请不要将其写入推送到该存储库的文件中。

一种方法是为秘密数据创建一个配置文件并将其添加到.gitignore文件中。在运行时打开配置文件,从中读取秘密数据并在脚本中使用它。

另一种方法是将秘密数据(密码和服务器名称)作为命令行参数提供给脚本。

只要存储库还包含明显或隐藏的密钥,任何其他“加密”(混淆)密码的方式都是不安全的。这可以通过一点努力来解码。


推荐阅读