你应该创建一个基于你期望并希望允许在FTP
链接的一部分,并使用该到合并您的附加参数params
仅元素的新哈希值。
你有什么可以让我通过修改查询字符串来添加任何我想要的信息FTP
,打开安全漏洞的大门。通过构建一个散列来代替params.merge(...
中的params
,您可以将预期的查询字符串组件有效地列入白名单,以便在您要呈现的模板中使用。
作为GET
例如,如果你希望像
/some/path?opt1=val1&opt2=val2
您的控制器操作的URL可能会做
@cleaned_params = { opt1: params[:opt1], opt2: params[:opt2] }
@cleaned_params.merge! action: :ftp, archive: archive, recipient: :company
再经过@cleaned_params到link_to
= link_to "FTP", @cleaned_params
这样,如果我手动输入像
/some/path?opt1=val1&opt2=val2&maliciousopt=somexss
的params[:maliciousopt]
将永远不会成为一个网址到您的FTP
link_to
在您的视图。
同样的行为适用于POST
请求,仅是恶意我可能会在提交
<input type="hidden" name="maliciousopt" value="somexss" />
由于之前添加几个字段的形式...你可以给我一个例子吗?我真的不明白。 – snowangel
为我更新了我的答案。 – deefour
完全感激 - 谢谢。 – snowangel