我正在尝试远程连接到MongoDB数据库,但不想在代码中以纯文本格式存储数据库的密码。什么是加密/解密密码的好方法,这样拥有源代码的任何人都无法使用它?源代码将在GitHub上。
我正在使用Python和PyMongo连接数据库。数据库在mongod.conf文件中启用了身份验证。该数据库托管在运行于AWS的Ubunutu 18.04实例上。
将服务器的IP地址也加密也是一件好事,因为在人们访问数据库之前,由于代码在GitHub上可用,然后大概被机器人抓取了,因此我遇到了安全问题。
我当前的URI看起来像这样
URI =“ mongo serverip --username mongo --authenticationDatabase admin -p”
我希望对IP地址和密码进行某种方式的加密,以使密码和IP在源代码中不会公开可用。
答案 0 :(得分:0)
只有一种简单的方法:
如果您不希望将密码和服务器名称包含在公共存储库中,请不要将其写入推送到该存储库的文件中。
一种方法是为秘密数据创建一个配置文件,并将其添加到.gitignore
文件中。在运行时,打开配置文件,从中读取机密数据并在脚本中使用它。
另一种方法是将机密数据(密码为服务器名)作为脚本的命令行参数提供。
只要存储库还包含明显或隐藏的密钥,“加密”(混淆)密码的任何其他方式都是不安全的。可以轻松解码。
答案 1 :(得分:0)
罗伯特提供的所有选项都很有意义。但是,我想再给出一个:
您可以在.bash_profile下的环境变量下存储用户名和密码,并在python中访问相应的env变量。
示例:- 在.bash_profile中:
export USRNM='myname'
export PASS='password'
在python中:
import os
username = os.environ.get('USRNM')
password = os.environ.get('PASS')
这样,用户名和密码将不会出现在您的项目目录中,并且无法通过查看源代码进行访问。
PS:进一步的加密可以添加到.bash_profile中存储的密码字符串中。