Brakeman无保护重定向Rails,S3,Paperclip

时间:2016-08-29 22:12:50

标签: redirect protected brakeman

我收到了Brakeman的警告。正如他们所说,依赖于用户提供的值的重定向可用于“欺骗”网站或隐藏恶意链接,否则看起来无害的URL。如果目的地未经过验证,他们还可以允许访问站点的受限区域。

| Confidence | Class | Method | Warning Type | Message | High | DocumentsController | download | Redirect | Possible unprotected redirect near line 46: redirect_to(+Document.find(params[:id]).f

在我的控制器中,我创建了一个方法download,它采用文件URL(存储在Amazon S3上的文件和我数据库中的URL,感谢Paperclip)并创建了一个URL(即document_url)由于.expiring_url(3)

,将持续3秒(供用户下载)
def download
  @document = Document.find(params[:id])
  document_url = @document.file.expiring_url(3)
  if URI.parse(document_url).host.include? "domain.com"
    redirect_to document_url, only_path: true
  else
    document_url = nil
  end
end

我一直试图通过Brakeman的验证而没有成功。正如您在上面所看到的,我试图检查我的域名是否存在于URL中,但它没有更改Brakeman上的报告。

知道如何继续吗?

1 个答案:

答案 0 :(得分:0)

我有类似的问题。我通过利用下面的强大参数传递了警告,但我不确定它为什么会起作用。

redirect_to referer_param

def referer_param
  params.require(:referer)
end