python - 远程连接到 MongoDB 数据库而不以明文形式存储密码
问题描述
我正在尝试远程连接到 MongoDB 数据库,但不想在代码中以明文形式存储数据库的密码。什么是加密/解密密码的好方法,因此任何拥有源代码的人都无法使用它?源代码将在 GitHub 上。
我正在使用 Python 和 PyMongo 来连接数据库。数据库在 mongod.conf 文件中启用了身份验证。该数据库托管在 AWS 中运行的 Ubunutu 18.04 实例上。
将服务器的 IP 地址加密也很好,因为我之前在人们访问数据库时遇到了安全问题,因为代码在 GitHub 上可用,然后可能被机器人抓取。
我当前的 URI 看起来像这样
URI = "mongo serverip --username mongo --authenticationDatabase admin -p"
我希望以某种方式加密 IP 地址和密码,以便密码和 IP 在源代码中不公开。
解决方案
只有简单的方法:
如果您不希望密码和服务器名称包含在您的公共存储库中,请不要将其写入推送到该存储库的文件中。
一种方法是为秘密数据创建一个配置文件并将其添加到.gitignore
文件中。在运行时打开配置文件,从中读取秘密数据并在脚本中使用它。
另一种方法是将秘密数据(密码和服务器名称)作为命令行参数提供给脚本。
只要存储库还包含明显或隐藏的密钥,任何其他“加密”(混淆)密码的方式都是不安全的。这可以通过一点努力来解码。
推荐阅读
- excel - 将数据从多个工作簿的工作表(名称包含“SAP”)复制到一张工作表中
- javascript - 如何使用 javascript 或 jQuery 更改字符的值长度?
- opencv - 删除文本周围的黑色边框/框以获得更好的 OCR?
- node.js - mongoose 在 MongoDB 中获取每个对话的最后一条消息
- apache-spark - 从 org.apache.hadoop.mapreduce.lib.input.FileInputFormat.getSplits 到番石榴的 StopWatch 的 IllegalAccessError
- c# - 在统一中,在LoadScene之后,有没有常见的方法来等待所有的monobehaviour#start完成
- angular - 以角度5下载base64图像
- node.js - 如何在 .pre('save,..) 部分中获取 mongoose schma 模式的总记录数?
- c# - 在评估元素“System.Windows.Controls.TextBlock”上的 ThemeStyle 属性时发现循环引用
- javascript - 只改变一个样式
- 单击它时的元素