我使用制动手来识别安全问题。 它标记了其使用的任何链接params.merge
作为一个跨站点脚本漏洞。 我怎样才能消毒类似于下面的东西?
- @archives.each do |archive|
= link_to "FTP", params.merge(:action => :ftp, :archive => archive, :recipient => "company")
我使用制动手来识别安全问题。 它标记了其使用的任何链接params.merge
作为一个跨站点脚本漏洞。 我怎样才能消毒类似于下面的东西?
- @archives.each do |archive|
= link_to "FTP", params.merge(:action => :ftp, :archive => archive, :recipient => "company")
您应该创建仅基于元素的新散列params
你期待和希望,让成为一部分FTP
链接,并使用该合并的附加参数。
你有什么可以让我添加任何我想的是FTP
通过修改查询字符串,对外开放的大门安全漏洞的链接。 通过建立使用哈希代替的params
在params.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_params到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" />