gpt4 book ai didi

python - 安全删除内存中的密码(Python)

转载 作者:行者123 更新时间:2023-11-28 19:13:10 25 4
gpt4 key购买 nike

如何将用户输入的密码存储在内存中,并在不再需要时安全地删除它?

详细来说,目前我们有以下代码:

username = raw_input('User name: ')
password = getpass.getpass()
mail = imaplib.IMAP4(MAIL_HOST)
mail.login(username, password)

在调用了login方法后,我们需要怎样做才能把密码所在的内存区域填满乱码,这样就无法通过core dump找回密码了?

有一个类似的问题,但是它在 Java 中并且解决方案使用字符数组: How does one store password hashes securely in memory, when creating accounts?

这可以用 Python 完成吗?

最佳答案

Python 没有那么低的内存控制级别。接受它,继续前进。您可以做的最佳是在调用mail.login 之后del password,这样就不会保留对密码字符串对象的引用。任何声称能够做的比这更多的解决方案只会给您一种错误的安全感。

Python 字符串对象是不可变的;没有直接的方法可以在创建字符串后更改其内容。 即使您能够以某种方式覆盖 password 引用的字符串的内容(这在技术上可以通过愚蠢的 ctypes 技巧实现),仍然会有其他副本在各种字符串操作中创建的密码:

  • 当 getpass 模块从输入的密码中删除尾随的换行符时
  • 由 imaplib 模块引用密码,然后在将其传递到套接字之前创建完整的 IMAP 命令

您将不得不以某种方式获取对所有这些字符串的引用并覆盖它们的内存。

关于python - 安全删除内存中的密码(Python),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37420871/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com