2

基本上有一堆服务器部署脚本引用服务器凭据(例如用户名、密码)。目前,凭据存储在他们自己的名为server_info的 python 模块内的服务器字典中:

servers = {
        'dev_server':{'server':'localhost', 'port':'80', 'username':'*********','password' : '*******'},
        'staging_server':{'server':'www.google.com', 'port':'80', 'username':'********','password' : '***********'},
    }

部署脚本导入此模块并通过密钥引用凭据:

from server_info import servers 

server_creds = servers['dev_server']
update_server(server_creds['username'], server_creds['password'], server_creds['port'])

server_creds = servers['staging_server']
update_server(server_creds['username'], server_creds['password'], server_creds['port'])

单独的模块防止在部署脚本中使用纯文本凭据,但 server_info 模块中仍然存在纯文本。

任何有关如何更好地存储此敏感信息的建议将不胜感激。欢迎所有想法,但寻找与平台无关的解决方案。

4

1 回答 1

-1

(可逆地)以某种方式对其进行编码,使其不再是纯文本......一些简单的例子是 rot13 , base64 , ceasar ciphers, 请记住这些实际上是编码而不是加密,任何有足够倾向这样做的人都可以破解它们。 ...即使您使用实际加密,您也需要在某处以明文形式存储密钥(尽管用户可以将密钥作为“通用”密码或其他内容输入)

通常是简单的事情

 old_data = open("server_info.py").read()
 open("server_info_encoded.py","w").write(base64.b64encode(old_data))

然后在某个时候你把它拉进来解码并将它解释为一个 json 字典

server_info = json.loads(base64.b64decode(open("server_info_encoded.py").read()))
于 2013-10-17T20:27:13.173 回答