前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >现代 Python 代码的密码管理之道

现代 Python 代码的密码管理之道

作者头像
初代庄主
发布2023-04-20 19:09:52
4610
发布2023-04-20 19:09:52
举报
文章被收录于专栏:初代庄主

背景

最近听说了一起非常有意思的密码泄露事件。大致上来说是这样的;一开始的时候程序员把 MySQL 用户名和密码直接写在了代码里面;后来他们可能也是觉得不安全,就把密码迁移到了配置文件中去。

看起来是没事了,但是 git 会帮记住一切!!!好巧不巧有一天 git 被泄露了,通过查看历史版本,MySQL 的用户名和密码就这样被发现。


现代的密码处理方式

操作系统提供的“钥匙串”功能是非常好的密码管理方式。各大浏览器都已经支持了这个功能,我现在已经不去记,我注册的那些用户名和密码了,都交给浏览器从钥匙串 (keyring) 中读取。

既然浏览器可以从钥匙串中读取密码,那我们的 Python 程序一定也可以呀!


让 Python 集成钥匙串功能

想要让 Python 能访问钥匙串可以说是非常简单,因为已经有大佬把相关的功能打包到了 keyring 这个软件包里面去了。所以我们只要把这个包安装上用起来就行了。Python 包的 API 向来简单,我们只需要三步就能从入门到精通了。


1. 第一步:安装依赖包

Mac 系统

代码语言:javascript
复制
pip3 install keyring

Linux 系统

代码语言:javascript
复制
pip3 install keyring keyrings.alt

2. 第二步:通过 keyring 向钥匙串中写入账户信息

代码语言:javascript
复制
import keyring
keyring.set_password("system", "username", "pass!1234")

就是这么简单,现在我们可以在钥匙串中看到它,如下下图。


3.第三步:通过代码查询钥匙串的密码

代码语言:javascript
复制
In [1]: import keyring

In [2]: keyring.get_password("system", "username")
Out[2]: 'pass!1234'

In [3]:

可以看到密码已经查出来了。


keyring 的命令行工具

keyring 库不但提供了钥匙串的 API 接口,这使得这个库更好用了。就拿我来说吧,我通常是用命令行工具去设置用户名密码,而 Python 代码中只去读取用户名和密码信息

1. 通过 keyring 命令设置密码

代码语言:javascript
复制
keyring set system username            
Password for 'username' in 'system': *****

2. 通过 keyring 命令读取密码

代码语言:javascript
复制
keyring get system username
pass!1234

3. 通过 keyring 命令清理已经存在的密码

代码语言:javascript
复制
keyring del system username

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2023-04-13,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 初代庄主 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
命令行工具
腾讯云命令行工具 TCCLI 是管理腾讯云资源的统一工具。使用腾讯云命令行工具,您可以快速调用腾讯云 API 来管理您的腾讯云资源。此外,您还可以基于腾讯云的命令行工具来做自动化和脚本处理,以更多样的方式进行组合和重用。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档