Ruby on rails 如何使用web应用程序的密钥安全地实现访问?
我正在开发一个Rails应用程序,用户无需注册即可添加帖子。我想生成一个随机的唯一键,并提供一个链接来编辑他们的帖子,例如:。Craigslist也采用了类似的方法 我的想法是在帖子创建时生成一个随机的、唯一的字符串,并将其与其他帖子数据一起保存在数据库中。然后检查数据库中的字符串是否与请求中的字符串匹配。这个解决方案安全吗 您将如何实施它Ruby on rails 如何使用web应用程序的密钥安全地实现访问?,ruby-on-rails,security,Ruby On Rails,Security,我正在开发一个Rails应用程序,用户无需注册即可添加帖子。我想生成一个随机的唯一键,并提供一个链接来编辑他们的帖子,例如:。Craigslist也采用了类似的方法 我的想法是在帖子创建时生成一个随机的、唯一的字符串,并将其与其他帖子数据一起保存在数据库中。然后检查数据库中的字符串是否与请求中的字符串匹配。这个解决方案安全吗 您将如何实施它 编辑:感谢您的回复。但是,生成随机字符串不是问题。我关心的是数据库的安全性和实现 如果我要实现这一点,我会使用gem,因为您基本上要做的是为数据库中的每条记
编辑:感谢您的回复。但是,生成随机字符串不是问题。我关心的是数据库的安全性和实现 如果我要实现这一点,我会使用gem,因为您基本上要做的是为数据库中的每条记录创建一个唯一的slug。默认情况下,friendly_id将使用列来创建slug。您可以告诉friendly_id使用
id
列,然后重写他们的normalize_-friendly_id
方法
在该方法中,您将生成一个唯一的字符串,然后返回它。此方法返回的文本是friendly_id将用于生成slug的文本
要生成slug,您可以简单地使用MD5哈希或执行以下操作:
使用这种方法而不是简单地自己创建/存储slug的好处是,您不必执行Post::find_by_slug(slug)
,您仍然可以使用Post::find(slug)
,因为friendly_id负责按slug查找记录
如果我要实现它,我会使用gem,因为您基本上要做的是为数据库中的每条记录创建一个唯一的slug。默认情况下,friendly_id将使用列来创建slug。您可以告诉friendly_id使用
id
列,然后重写他们的normalize_-friendly_id
方法
在该方法中,您将生成一个唯一的字符串,然后返回它。此方法返回的文本是friendly_id将用于生成slug的文本
要生成slug,您可以简单地使用MD5哈希或执行以下操作:
使用这种方法而不是简单地自己创建/存储slug的好处是,您不必执行Post::find_by_slug(slug)
,您仍然可以使用Post::find(slug)
,因为friendly_id负责按slug查找记录
在我的应用程序中,有一个覆盖友好的_idgem的函数我使用类似的函数(您的控制器/视图调用to_参数来生成路由)
class Post
唯一的问题是SHA1生成长字符串。您可以改用MD5…我在我的应用程序中使用类似的功能(您的控制器/视图会调用to_param来生成路由)
class Post
唯一的问题是SHA1生成长字符串。您可以改用MD5…确保密钥不可猜测,并且不会显示在任何公共页面上。此外,您还可以在编辑帖子后向帖子的所有者发送通知。请确保密钥不可猜测,也不显示在任何公共页面上。此外,你可以在帖子编辑后向帖子的所有者发送通知。友好id gem可能会非常有用。谢谢。友好的宝石可能会很有帮助。谢谢
(0...50).map{ ('a'..'z').to_a[rand(26)] }.join
class Post < AR::Base
def to_param
Digest::SHA1.hexdigest("--#{self.if}--#{self.created_at}--")
end
end