首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >用Python安全地处理密码?

用Python安全地处理密码?
EN

Stack Overflow用户
提问于 2013-04-12 16:09:57
回答 2查看 8K关注 0票数 2

我想尝试一个系统,在那里我使用一个密钥,并使用一个网站的名称,然后散列,并使用哈希作为我的密码在网站上,它是咸的。但是,我想安全地做这件事。我担心的是:

  1. 正在打印到终端的散列(给定站点的密码)。
  2. 哈希,以及用于生成哈希的通用密钥,都在内存中。

打印密码到终端,然后关闭终端会安全吗?一旦Python完成,密钥和密码会从内存和磁盘中消失吗?我将使用getpass,但这是否提供了任何实际的安全性,以防止任何东西,除了肩扛的旁观者?有没有一种方法可以安全地覆盖RAM中的原始密钥和散列/密码?

EN

回答 2

Stack Overflow用户

发布于 2013-04-12 16:36:57

简短的回答是否定的。Python会将密码存储在内存中的许多地方,也不会从内存中清除密码,它只会释放存储密码的内存区域。

例如,这意味着在.NET中不存在像.NET这样的东西。

有关所有这些的更多信息:Python - Releasing/replacing a string variable, how does it get handled?

最好的选择是编写自己的C语言库,处理内存中的输入和存储,并在其中构建一个shred()函数,不仅释放内存区域,而且还通过该内存分配写入数据。

您的ld_preload是一个替换malloc的,以及python不使用的。

代码语言:javascript
运行
复制
import getpass
print getpass.getpass('Give me your password: ')

此外,哈希通常是不好的。散列你的东西很好,如果你存储东西,纯文本是错误的,但是你不应该使用它作为身份验证方法,除非你知道你在做什么和为什么。另外,通常你必须储存你的盐,这在很大程度上是个坏主意,因为这只会使散列作废。呃,我累了,但是谷歌一下,你就知道了。

票数 2
EN

Stack Overflow用户

发布于 2013-04-12 16:50:46

我不担心这些。如果您的机器上有敌对的代理,那么您需要担心的问题比终端缓冲区和私有内存还要大。

我确实知道,已经有类似的解决方案,比你所描述的要花哨得多;浏览器插件将主密码与域名结合在一起,形成一个独特的插件,具有很好的自动完成功能。

但是如果这主要是一个编程练习,那就去做吧!“正常”用户将无法访问您的终端缓冲区。他们也不应该能够检查您的进程的内存。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15976101

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档