我的rails项目遇到了问题。 使用Nokogiri打开用户输入的网址时,Brakeman gem会生成命令注入警告。这是我的代码
require 'open-uri'
url = params[:url]
doc = Nokogiri::HTML(open("#{url}", "User-Agent" => "Ruby/#{request.user_agent}"))
这是刹车手的警告信息
在第101行附近的open()中可能的命令注入:打开("#{params [:url]}"," User-Agent" =>(&#34 ;红宝石/#{request.user_agent}&#34))
有谁知道可以修复刹车手警告的解决方案?谢谢!
答案 0 :(得分:2)
您收到此警告是因为open
可以打开很多内容,而网址只是其中之一。如果有人发送了一个" url" |rm -rf /
然后您处于错误状态,因为前导|
字符表示"使用shell打开并获取输出"。
这个警告很严重。注意它并且不要将任意参数发送到open
。如果您正在寻找仅提取网址,请使用Faraday之类的HTTP库来可靠,安全地执行此操作。 open-uri
是一个快速而肮脏的黑客行为,可以让你陷入困境。