Python:需要多个调用时保护密码参数

时间:2019-04-16 14:33:17

标签: python lambda passwords

我正在实现一个类,该类表示与API /数据库的连接,并希望提供一种在连接丢失(例如由于超时)时重新连接的方法。用户在初始化时提供用户名和密码,由于API要求,用户名和密码必须为纯文本。

我认为不应将密码存储在任何实例变量中;我知道one may use the “keyring” library,但是想知道是否有不依赖外部库的任何方式和/或以后无法通过任何方式透露密码。

我想到的一种方法是使用lambda创建器:

class Connection:
    def __init__(self, *args, **kwargs):
         # other stuff
         password = input(“some message”)
         self.connection_handle = (lambda pass : (lambda : api.connect(password=pass))(password)
         del password
         self.conn = self.connection_handle()

    def reconnect(self):
         self.conn = self.connection_handle()

为简单起见,我们假设某些API提供的连接过程password仅使用api.connect(这是原始密码)。

我尝试了inspect.showsource,还检查了connection_handle的其他属性。在我看来,password的价值在任何地方都找不到。但是我不确定。

所以这是我的问题:

  1. 这种lambda创建者方法真的安全吗,即使人们可以访问password的实例,也无法恢复Connection

  2. 当需要多次使用不希望存储的敏感参数来调用一种方法时,是否存在任何“标准范例”来应对这种情况?

谢谢。

0 个答案:

没有答案