ruby - 在 Ruby 中安全地从内存中删除密码

标签 ruby passwords erase

我正在编写一个需要处理用户企业密码的 Ruby 应用程序。我想尽量减少密码在内存中的时间,以减少密码被泄露的可能性。

在母语中,我会直接删除数据。在 C# 中,我会使用 SecureString class .在 Java 中,我会使用 char[] .但我能找到的最好的 Ruby 是 old feature request那似乎死了。

在 Ruby 中安全地存储和删除内存中的密码的标准是什么?有这样的类(class)吗?类似于Java的char[]的编码模式?

最佳答案

一个 ruby​​ 问题已经存在了 5 年 ( 5741 ),涉及从内存中安全删除 secret 。该问题还包含一些链接,这些链接解释了为什么从内存中删除密码是一件好事。最近 MacOs FileVault2 确实有问题,因为密码存储在内存中。

问题 5741 中显示的一种可能的解决方案是:

pass = ""
$stdin.sysread(256, pass) # assuming a line-buffered terminal
io = StringIO.new("\0" * pass.bytesize)
io.read(pass.bytesize, pass)

它似乎适用于 ruby​​ 2.3.1p112,但我不能保证。

关于ruby - 在 Ruby 中安全地从内存中删除密码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37714099/

相关文章:

html - 我想显示分为两部分的结果(平行布局)

ruby-on-rails - 减少 Heroku Bamboo 堆栈上的 slug 大小

linux - 将 Linux 用户的当前密码与在 Perl 中输入的密码进行比较

php - 如何检查用户名和密码是否与数据库值匹配

特定索引处的 C++ vector 删除无法正常工作

c++ - vector::erase 导致奇怪的行为

ruby - 找到给定数字的因子的最快方法

ruby-on-rails - Ruby on Rails 未定义的 simple_form_for 方法

php - md5哈希登录php和mysql

从 Linux 目录中删除点文件的 PHP 脚本