python-keyring如何在Windows上提供安全性?
在Linux上的GNOME / KDE中,系统会提示用户输入密码以授权每个应用程序访问密钥环。
在Windows中,当应用程序访问密钥环时,没有此类提示。是什么阻止随机python应用程序通过运行
从密钥环中检索密码import keyring
get_password(service, username)
如何实施用户同意?整个概念,至少在Windows中,基于所有已安装的程序都是“可信”的假设?
答案 0 :(得分:8)
稍微研究一下,密码似乎存储在Windows Credential Vault中,这相当于Gnome或KDE密钥环。您可以通过打开Windows Credential Manager实际查看已存储的内容。我只需从开始屏幕在Windows 8.1上键入Credential Manager
即可到达那里,但我认为您也可以从用户帐户页面访问它。
无论如何,正如您从附加图片中看到的那样,我作为测试添加到密钥环的密码显示在Windows Credentials
->
Generic Credentials
->
{{ 1}}。打开此窗口,因为PC上的另一个用户没有显示此密码,因此它似乎可以从其他用户获得保护。此屏幕还允许您撤消或更改密码。
至于如何实施同意,我相信只要您的Windows用户帐户已登录,keyring_demo
就会运行,但我不知道具体细节。
答案 1 :(得分:0)
cedential manager方法有效,但在我的情况下添加:
然后使用相同的网络地址添加另一个条目
pass2将 OVERRIDE frist条目pass1! 这是一个主要的回归,因为“互联网或网络地址” 作为密钥环中的组名,我需要输入多个密码 同名
我的解决方案是使用python命令直接
您可以通过
验证结果我知道这会有效,但仍然很难找到实际数据的位置 已保存
我使用以下命令尝试找出
python -c“import keyring.util.platform_; print(keyring.util.platform_.config_root())”
python -c“import keyring.util.platform_; print(keyring.util.platform_.data_root())”
我的情况下的data_root是“C:\ Users \ JunchenLiu \ AppData \ Local \ Python Keyring” 我检查了文件夹,它不存在...它必须保存在某个地方。也许有人可以搞清楚。
但我的解决方案应该在Windows上完美运行
答案 2 :(得分:-4)
from keyring.backend import KeyringBackend
class SimpleKeyring(KeyringBackend):
"""Simple Keyring is a keyring which can store only one
password in memory.
"""
def __init__(self):
self.password = ''
def supported(self):
return 0
def get_password(self, service, username):
return self.password
def set_password(self, service, username, password):
self.password = password
return 0
def delete_password(self, service, username):
self.password = None