Ruby on rails 如何制作id';我的Rails 3应用程序的URL中有哪些内容更安全/更模糊?

Ruby on rails 如何制作id';我的Rails 3应用程序的URL中有哪些内容更安全/更模糊?,ruby-on-rails,url,Ruby On Rails,Url,我当前的应用程序在URL中使用非常基本的用户id和消息id。我想对id进行模糊处理,以便某人不容易手动更改id并跳转到其他人的消息中,等等 如何做到这一点?问题应该是“如何对URL参数进行签名,使其无法更改” 使用只有后端代码(服务器)知道的秘密salt。然后执行类似于将所有参数(在您的示例中,仅是id)与salt连接在一起的操作,并创建一个SHA哈希。将哈希附加到URL。在控制器中,添加before_过滤器以检查哈希的正确性 现在,当有人更改id时,他们还必须重新生成哈希,如果没有秘密盐,这是

我当前的应用程序在URL中使用非常基本的用户id和消息id。我想对id进行模糊处理,以便某人不容易手动更改id并跳转到其他人的消息中,等等

如何做到这一点?

问题应该是“如何对URL参数进行签名,使其无法更改”

使用只有后端代码(服务器)知道的秘密salt。然后执行类似于将所有参数(在您的示例中,仅是id)与salt连接在一起的操作,并创建一个SHA哈希。将哈希附加到URL。在控制器中,添加before_过滤器以检查哈希的正确性


现在,当有人更改id时,他们还必须重新生成哈希,如果没有秘密盐,这是不可能的。您可以通过使用会话id、时间戳等作为组件之一来说明超时等来改进这一点。

UUID。我是rails新手,但我知道有一些选择,因为我需要与您想要的相同的安全性。第一个是UUIDtools gem,用于随机id而不是顺序id。显然,Rails3支持uuid作为数据类型,但它并没有得到广泛应用

我想添加:将散列存储在用户表中。将
to_param
方法添加到模型中,并使其返回哈希。在控制器中,当您从数据库中提取用户时,不要使用
User.find(param[:id])
而是
User.find by_hash(params[:id]
。我如何制作SHA哈希并将其附加到我的URL…这是在替换ID吗?@angela-最终URL看起来像www.angela.com/:ID/:hash您使用Digest::MD5.hexdigest…或我认为我看到的任何其他类似函数创建哈希,但我不熟悉该函数。它只是hash=Digest::MD5.hexdigest(params[:ID])并将其存储为@wukerplank said…?@wukerplank--添加一个to_param方法是什么意思?您的意思是def to_param和self.hash=从:id计算哈希?谢谢。。。。