rails - 建议使用安全的UUID

时间:2010-11-25 05:51:43

标签: ruby-on-rails security ruby-on-rails-3

我需要创建一个唯一的ID来保护非常安全的东西。

现在我正在做Rails:

uuid = (UUIDTools::UUID.timestamp_create().to_s.gsub('-','') + UUIDTools::UUID.timestamp_create().to_s.gsub('-',''))

您对此方法有何看法?聪明?坏?建议?

由于

4 个答案:

答案 0 :(得分:2)

如果没有更多关于你问题的上下文,很难规定一个解决方案,但是质量好的伪随机数很可能是有用的。在Rails中,ActiveSupport :: SecureRandom非常方便。

答案 1 :(得分:2)

如果您希望任何对手无法预测您的标识符,您将需要使用加密强大的伪随机数生成器。就位大小而言,128位(或16字节)是一个很好的数字。

# if using Ruby < 1.9:
require 'active_support/secure_random'

id = SecureRandom.random_bytes(16)

为方便起见,还有方法.hex.base64.urlsafe_base64。这些只是生成相应数量的随机字节,然后以适当的方案对随机字节进行编码。例如,SecureRandom.hex(16)将为您提供32个安全随机的十六进制字符。

答案 2 :(得分:1)

UUID不是为了安全性而设计的,不应该是任何安全技术的关键部分。见http://www.ietf.org/rfc/rfc4122.txt - 尤其是第6节。

答案 3 :(得分:0)

它将生成一个v4随机UUID(通用唯一标识符),它在大型命名空间中是唯一的,用于在数据库中生成ID的通用唯一编号。

require 'securerandom'
UUID = SecureRandom.uuid