0

我的rails项目遇到了问题。使用 Nokogiri 打开用户输入的 url 时,Brakeman gem 会生成命令注入警告。这是我的代码

    require 'open-uri'
    url = params[:url]
    doc = Nokogiri::HTML(open("#{url}", "User-Agent" => "Ruby/#{request.user_agent}"))

这是刹车员的警告信息

在第 101 行附近的 open() 中可能的命令注入: open("#{params[:url]}", "User-Agent" => ("Ruby/#{request.user_agent}"))

有谁知道可以解决刹车警告的解决方案?谢谢!

4

1 回答 1

2

您收到此警告是因为open可以打开很多东西,URL 只是其中之一。如果有人发送了一个“url”,|rm -rf /那么你的处境就很糟糕,因为前导|字符表示“使用 shell 打开并获取输出”。

这个警告很严重。注意它,不要将任意参数发送到open. 如果您只想获取 URL,请使用Faraday之类的 HTTP 库来可靠且安全地执行此操作。open-uri是一种快速而肮脏的黑客攻击,可能会给您带来麻烦。

于 2018-03-14T16:33:14.663 回答