0

为了回复从用户 A 收到的消息,我id通过 link_to 标签传入用户 A:

<%= link_to "Reply", new_message_path(:id => @user.id), class: "button" %>

然后我可以确保收件人是@user。但问题是,当新视图使用发送消息表单打开时,URL 也有用户 A 的 id。我怎么能隐藏它?因为有人可以轻松更改参数,然后可以将消息发送给另一个用户而不是用户 A。

4

3 回答 3

2

如果您需要 id,则需要以某种方式发送参数。你不能也可能不想隐藏它。

如果有人更改 url 以将消息发送给另一个用户,他会心甘情愿地这样做。

如果您想确保用户只能向某些用户发送消息,您应该通过设置权限来做到这一点。

隐藏参数不会为您带来任何好处。

于 2013-04-11T09:19:53.813 回答
1

你不能。

我的意思是你可以隐藏它并使用 POST 方法和一个隐藏字段作为 id,但风险是一样的:任何人都可以更改 id。

您需要问自己一个问题“如何保护我的消息系统,以便用户无法向其他用户发送消息”。我建议在您的消息中创建一个令牌字段(如长随机字符串)并使用此令牌来验证消息是否发送给正确的用户。它需要一些编码,但是您的应用程序需要安全性吗?您无法避免它

于 2013-04-11T09:21:53.927 回答
0

使用这种语法你还有这个问题吗?

<%= link_to "Reply", new_message_path(@user), class: "button" %>

您的控制器操作“创建”中有什么代码?

于 2013-04-11T09:19:54.157 回答