我的rails项目遇到了问题。Brakeman gem 在使用 Nokogiri 打开用户输入的 url 时生成命令注入警告。这是我的代码
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}"((
有谁知道可以解决刹车员警告的解决方案?谢谢!
您收到此警告是因为open
可以打开很多东西,URL只是其中之一。如果有人发送了|rm -rf /
的"url",那么您将陷入一段糟糕的时光,因为前导|
字符表示"使用 shell 打开并获取输出"。
这个警告很严重。注意它,不要向open
发送任意参数。如果您只想获取URL,请使用像Faraday这样的HTTP库来可靠,安全地执行此操作。 open-uri
是一个快速而肮脏的黑客,可能会给您带来麻烦。