使用python密钥环存储密码


16

我正在使用密钥环库在我的python应用程序中存储密码。

import keyring
keyring.set_password('My namespace', username, password)
keyring.get_password('My namespace', username)

而且效果很好。

我认为密码在密钥环中是安全的,并且已加密。但是,由于我可以通过用户名获取它们,是什么阻止其他应用程序执行此操作?

这不是安全隐患,还是我错过了一些东西?

Answers:


14

密钥环库使用桌面环境的标准密钥环,例如GNOME密钥环。登录后,此密钥环即被解锁,这意味着:是的,您运行的任何其他应用程序都可以访问与应用程序一起存储的密码,但是-这就是密钥环的概念-其他用户及其应用程序没有。

引用“ gnome-keyring安全理念 ”:

安全剧院的一个例子是给人一种错觉,即某个在安全上下文中运行的应用程序(例如您的用户会话)可以以某种方式保留来自在同一安全上下文中运行的另一个应用程序的信息。

请注意,/ 函数username中的set_password/ get_password与运行该应用程序的用户的名称(即,使用其密钥环的用户)的名称无关,例如可以是电子邮件地址,数据库用户名等。


感谢您的回答。因此,存储密码可能会有风险:)
— umpirsky 2011年

3
不可以,任何获取密码的人都需要知道(或已经提供)用户登录密码。尝试将自动登录设置为开,然后运行您的应用。如果不提供登录密码,则不应访问已存储的密码。
— 哈维尔·里维拉

@umpirsky:它比存储在文件中没有任何风险。而且,无论您如何加密,解密密钥都必须存储在某个地方或以某种方式提供。因此,无论您做什么,会话中的任何应用程序都可以访问它。
— MestreLion 2014年

重要的是要注意,在没有Gnome密钥环的Ubuntu Server上运行的这段代码将退回到具有Base64编码值且易于访问的文件中。
— Cat Man Do

该链接似乎已消失。
— AdamC
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.