params.merge和跨站点脚本(params.merge and cross site scr

2019-06-27 19:11发布

我使用制动手来识别安全问题。 它标记了其使用的任何链接params.merge作为一个跨站点脚本漏洞。 我怎样才能消毒类似于下面的东西?

  - @archives.each do |archive|
    =  link_to "FTP", params.merge(:action => :ftp, :archive => archive, :recipient => "company")

Answer 1:

您应该创建仅基于元素的新散列params你期待和希望,让成为一部分FTP链接,并使用合并的附加参数。

你有什么可以让我添加任何我想的是FTP通过修改查询字符串,对外开放的大门安全漏洞的链接。 通过建立使用哈希代替的paramsparams.merge(...你有效的白名单预计查询字符串组件在你渲染模板使用。


作为一个GET例如,如果你希望像一个网址

/some/path?opt1=val1&opt2=val2

你的控制器动作,您可能会做

@cleaned_params = { opt1: params[:opt1], opt2: params[:opt2] }
@cleaned_params.merge! action: :ftp, archive: archive, recipient: :company

然后通过@cleaned_pa​​rams到link_to

=  link_to "FTP", @cleaned_params

这样,如果我手动输入一个URL像

/some/path?opt1=val1&opt2=val2&maliciousopt=somexss

params[:maliciousopt]永远不会让它进入你的FTP link_to在您的视图。

同样的行为适用于POST请求,仅是恶意我可能会在提交前添加几个字段到窗体

<input type="hidden" name="maliciousopt" value="somexss" />


文章来源: params.merge and cross site scripting