我需要在 Python 中安全地存储用户名和密码,我有哪些选择? [关闭]

2024-03-15

我正在编写一个小型 Python 脚本,它将使用用户名和密码组合定期从第三方服务中提取信息。我不需要创建 100% 防弹的东西(100% 真的存在吗?),但我希望采用良好的安全措施,这样至少有人需要很长时间才能破解它。

该脚本没有 GUI,将定期运行cron,所以每次运行时输入密码来解密是行不通的,我必须将用户名和密码存储在加密文件中或加密在 SQLite 数据库中,这将是更好的选择,因为我会无论如何,我都使用 SQLitemight需要在某个时候编辑密码。此外,我可能会将整个程序包装在一个 EXE 中,因为此时它仅适用于 Windows。

如何安全地存储用户名和密码组合,以便通过cron job?


The python 密钥环库 https://pypi.python.org/pypi/keyring与集成CryptProtectData https://msdn.microsoft.com/en-us/library/windows/desktop/aa380261(v=vs.85).aspxWindows 上的 API(以及 Mac 和 Linux 上的相关 API),使用用户的登录凭据加密数据。

简单用法:

import keyring

# the service is just a namespace for your app
service_id = 'IM_YOUR_APP!'

keyring.set_password(service_id, 'dustin', 'my secret password')
password = keyring.get_password(service_id, 'dustin') # retrieve password

如果要将用户名存储在密钥环上,请使用:

import keyring

MAGIC_USERNAME_KEY = 'im_the_magic_username_key'

# the service is just a namespace for your app
service_id = 'IM_YOUR_APP!'  

username = 'dustin'

# save password
keyring.set_password(service_id, username, "password")

# optionally, abuse `set_password` to save username onto keyring
# we're just using some known magic string in the username field
keyring.set_password(service_id, MAGIC_USERNAME_KEY, username)

稍后从钥匙圈获取您的信息

# again, abusing `get_password` to get the username.
# after all, the keyring is just a key-value store
username = keyring.get_password(service_id, MAGIC_USERNAME_KEY)
password = keyring.get_password(service_id, username)  

项目使用用户的操作系统凭据进行加密,因此在您的用户帐户中运行的其他应用程序将能够访问密码。

为了掩盖该漏洞,您可以在将密码存储在密钥环上之前以某种方式加密/混淆密码。当然,任何针对您的脚本的人都只能查看源代码并找出如何解密/取消混淆密码,但您至少可以防止某些应用程序清理保管库中的所有密码并获取您的密码。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

我需要在 Python 中安全地存储用户名和密码,我有哪些选择? [关闭] 的相关文章

  • Celery计划任务中的打印语句不会出现在终端中

    当我跑步时celery A tasks2 celery worker B我想看到每秒打印 芹菜任务 目前没有打印任何内容 为什么这不起作用 from app import app from celery import Celery from
  • 美丽的汤从谷歌搜索中提取href

    谷歌搜索给出了以下 HTML 的第一个结果 h3 class r a href https rads stackoverflow com amzn click com 0470284889 class l vst em Quantitati
  • 带括号的上下文管理器

    我试图了解新的新内容带括号的上下文管理器Python 3 10 中的功能 新功能中的顶部项目here https docs python org 3 10 whatsnew 3 10 html 我的测试示例是尝试编写 with open f
  • 创建一个打开文件并创建字典的函数

    我有一个正在处理的文件 我想创建一个读取文件并将内容放入字典中的函数 然后该字典需要通过 main 函数传递 这是主程序 它无法改变 我所做的一切都必须与主程序配合 def main sunspot dict file str raw in
  • 在 Python 3 中动态导入模块的问题

    我遇到的情况是 在我的 Python 3 项目中 在运行时必须包含某些模块 我在用着importlib import module为了这 第二次更新 我确实找到了一种方法来做一些接近我想要的事情 一些额外的代码可能会使我的一些链接稍微偏离一
  • 十六进制数的按位异或

    我们如何在 Python 中对十六进制数进行异或 例如 我想要异或 ABCD and 12EF 答案应该是 B922 我使用了下面的代码 但它给出了错误的结果 xor two strings of different lengths def
  • 使用字母而不是数字进行顺序计数[重复]

    这个问题在这里已经有答案了 我需要一种方法 将字符串 递增 到 z 然后将 aa 递增到 az 然后将 ba 递增到 bz 依此类推 就像 Excel 工作表中的列一样 我将向该方法提供前一个字符串 它应该增加到下一个字母 PSEUDO C
  • 使用 Python 的文本中的词频但忽略停用词

    这给了我文本中单词的频率 fullWords re findall r w allText d defaultdict int for word in fullWords d word 1 finalFreq sorted d iterit
  • 上传的白名单或黑名单文件扩展名?

    我正在制作一个新闻通讯编辑器 它将允许文件上传 新闻通讯的发件人可以将文件上传到将在电子邮件中链接到的服务器 该站点的设置使得只有 do URI 实际由 servlet 执行 处理 因此不会有太大的安全风险 但有人告诉我将 jsp php
  • 如何使用 jira-python 设置 fixVersions 字段

    我正在尝试使用 jira python 模块 http jira python readthedocs org en latest 更新现有的 JIRA 具体来说 我正在尝试设置问题的fixesVersion 列表 我已经尝试了一段时间但没
  • 如何使用 msgpack 进行读写?

    如何序列化 反序列化字典data with msgpack http msgpack org The Python 文档 http msgpack python readthedocs io en latest badge latest似乎
  • 如何在 Python 中仅列出 zip 存档中的文件夹?

    如何仅列出 zip 存档中的文件夹 这将列出存档中的每个文件夹和文件 import zipfile file zipfile ZipFile samples sample zip r for name in file namelist pr
  • Flask SQLAlchemy 与 MyPy - 模型类型错误

    我遇到了以下组合问题flask sqlalchemy and mypy 当我定义一个新的 ORM 对象时 例如 class Foo db Model pass where db是使用创建的数据库SQL炼金术应用于flask app mypy
  • 请求response.iter_content()获取不完整的文件(1024MB而不是1.5GB)?

    您好 我一直在使用此代码片段从网站下载文件 到目前为止 小于 1GB 的文件都很好 但我注意到 1 5GB 文件不完整 s is requests session object r s get fileUrl headers headers
  • psutil:测量特定进程的CPU使用率

    我正在尝试测量进程树的 cpu 使用率 目前获取进程 没有子进程 的 cpu usage 就可以了 但我得到了奇怪的结果 import psutil p psutil Process PID p cpu percent 还给我float g
  • 在 scrapy 中将基本 url 与结果 href 结合起来

    下面是我的蜘蛛代码 class Blurb2Spider BaseSpider name blurb2 allowed domains www domain com def start requests self yield self ma
  • Jupyter Notebook 中的多处理与线程

    我试图测试这个例子here https ipywidgets readthedocs io en stable examples Widget 20Asynchronous html将其从线程更改为多处理 在 jupyter Noteboo
  • 测试中的模型 - Django 1.7 问题

    我正在尝试将我的项目移植为使用 Django 1 7 除了一件事之外 一切都很好 测试文件夹内的模型 Django 1 7 新迁移在内部运行 migrate 命令 在运行syncdb之前 这意味着如果模型未包含在迁移中 它将不会填充到数据库
  • 在Python中从列表中获取n个项目组的惯用方法? [复制]

    这个问题在这里已经有答案了 给定一个列表 A 1 2 3 4 5 6 是否有任何惯用的 Pythonic 方式来迭代它 就好像它是 B 1 2 3 4 5 6 除了索引之外 这感觉像是 C 的遗留物 for a1 a2 in A i A i
  • python中匹配3个或更多相同的字符

    我正在尝试使用正则表达式在字符串中查找三个或更多相同的字符 例如 你好 不匹配 噢 会的 我尝试过做类似的事情 re compile 1 3 a zA Z re compile w 1 5 但似乎都不起作用 w 1 2 是您正在寻找的正则表

随机推荐

  • 活动更改之前的动画

    我试图做一些简单的事情 但我不明白为什么它不起作用 我想做的是 当我触摸 ImageView 时 它会在上面显示动画 然后 只有当该动画结束时 它才会开始新的活动 相反 发生的情况是新活动立即开始并且不显示动画 这是动画 xml
  • java swing中N个jtable的同步滚动

    我需要将 N 个表并排排列在网格窗格中 前提是所有 jtable 的滚动窗格高度保持相同 现在我想同步所有 jtable 的滚动 这意味着如果我滚动第一个 jtable 那么其余的 jtable 应该自动滚动相同的量 有人对此有任何想法吗
  • Net::HTTP 对 HTTPS 请求的响应极其缓慢

    由于某种原因 在我的开发机器上 通过 Net HTTP 执行的 HTTPS 请求的响应非常非常慢 我尝试过 RestClient 和 HTTParty 它们都有同样的问题 它似乎不知从何而来 我已经提出了数百次这些请求 没有任何问题 但今天
  • Sql连接查询

    我有三张桌子 tblLink LinkId LinkName GroupId SubGroupId GroupId 和 SubGroupId 是 tblGroup 和 tblSubGroup 中的外键tblGroup 组ID 组名称 tbl
  • 在 Python 中查看 Popen 管道流

    背景 Linux 上的 Python 2 6 6 DNA 序列分析流程的第一部分 我想从已安装的远程存储 LAN 读取可能经过 gzip 压缩的文件 以及它是否经过 gzip 压缩 gunzip 将其压缩到流中 即使用gunzip FILE
  • Mysql UPDATE ON DUPLICATE KEY 仅插入

    我正在尝试运行一个查询 以便它将插入或更新重复项 我正在为重复项使用唯一索引 但我似乎无法让它工作 它还增加了新记录 希望一些新的目光能够指出我的问题 谢谢 这是我的架构 CREATE TABLE IF NOT EXISTS pricing
  • gmtime_r 和 gmtime_s 之间的区别

    这两个函数有什么区别呢 我正在使用 MinGW 4 8 0 我知道gmtime r是线程安全的 但如果从同一线程多次调用则不安全 但我不明白gmtime s 不同之处在于gmtime r 3 http linux die net man 3
  • 使用 Kotlin 关闭/隐藏 Android 软键盘

    我正在尝试用 Kotlin 编写一个简单的 Android 应用程序 我的布局中有一个 EditText 和一个按钮 在编辑字段中写入并单击按钮后 我想隐藏虚拟键盘 有一个热门问题 关闭 隐藏 Android 软键盘 https stack
  • Rails Paperclip:更新与 update_attributes

    当我尝试通过回形针 gem 为我的用户模型 在头像属性下 上传图像时 我意识到一些非常奇怪的事情 由于某种原因 User update 和 user update attributes 的行为有所不同 有谁知道为什么会这样 using us
  • find_packages 找不到我的 Python 文件

    我有一个像这样的目录树 dir A init py something py I used find packages on dir A并期望它能找到something py 但是 它返回一个空列表 我该如何制作find packages
  • 如何在 Seaborn 图中设置色调顺序

    我有一个名为的 Pandas 数据集titanic我正在使用以下代码绘制 Seaborn 官方文档中所述的条形图 import seaborn as sns titanic sns load dataset titanic sns catp
  • 如何使用单个文本框根据任何列数据过滤行

    我在用ng table http bazalt cms com ng table 我尝试使用中给出的过滤器example http bazalt cms com ng table example 4 但为了过滤每一列 我需要有单独的文本框
  • Rails - 对象在视图中可用,但对象的属性不可用?

    我遇到一个不寻常的问题 我可以访问对象 但不能访问视图中的属性 非常感谢任何帮助 指导 这是我的模型 app models team member rb class TeamMember lt ApplicationRecord attr
  • IntelliJ 2017.2 卡在“新项目”>“Maven”的“正在加载原型列表”上

    选择时Create New Project启动 IntelliJ 2017 2 后的选项 我在Maven标签 写着 正在加载原型列表 有什么办法可以得到 Maven 原型吗 我刚刚在 2017 年 2 月 3 日 刚刚更新 在 Fedora
  • 隐藏特定内容页的状态栏

    我正在创建一个应用程序 我想在特定页面上隐藏状态栏 在我的示例中 它是一个内容页面 我发现了几个使用 info plist 来隐藏它的示例 但我只想将其用于特定页面 这可能吗 使用 NavigationPage SetHasNavigati
  • 如何将 androidx.recyclerview.widget.RecyclerView 与 tools:listitem 一起使用?

    如何使用androidx recyclerview widget RecyclerView with tools listitem 我有这样的布局
  • 检查 html5 视频是否准备就绪

    如果 HTML5 视频准备好播放 是否会触发 JavaScript 事件 刚刚遇到这个问题 虽然它有点旧 但我将其发布给未来的读者 他们像我一样 可能来自谷歌 截至今天 这是 html5 媒体的事件列表 根据 W3C onabort 中止时
  • 提供的实体包含具有无效值的关系

    当我将应用程序上传到 App Store Connect 时出现以下错误 The provided entity includes a relationship with an invalid value is not a valid ID
  • C++ 错误:“内联”只能出现在函数上

    我正在尝试编译VCMI http forum vcmi eu portal php在 OS X 10 7 下使用 clang 我配置了项目CXX clang 因为苹果的 gcc 似乎不识别 required std c 0x flag 我已
  • 我需要在 Python 中安全地存储用户名和密码,我有哪些选择? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我正在编写一个小型 Python 脚本 它将使用用户名和密码组合定期从第三方服务中提取信息 我不需要创建 100 防弹的东西 100 真的存在吗