在Ruby中安全擦除内存中的密码

时间:2016-06-08 22:39:44

标签: ruby passwords erase

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

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

在Ruby中安全存储和擦除内存密码的标准是什么?有没有这样做的课程?编码模式类似于Java的char[]

1 个答案:

答案 0 :(得分:0)

红宝石问题现在存在5年(5741),关于从内存中安全删除机密。该问题还包含一些链接,解释了为什么从内存中删除密码是一件好事。最近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,但我不能保证。