rails 4.1.0中的路径遍历攻击

时间:2015-04-03 05:58:26

标签: ruby-on-rails security brakeman

我收到file access警告以下代码:

FileUtils.rm(File.join(Project.with_deleted.find_by(
  :user_id => (User.find_by(:username => (params[:user_id])).id),
  :name => (params[:id])
).satellitedir, params[:image_name]))

警告是:

  

当用户提供的输入可以包含" .."或类似的字符   被传递到文件访问API,导致访问文件   在预期的子目录之外。

我试图用以下方法消毒params:

 if !params[:image_name].gsub(/\\/, '').index('../')
   #my code
 end

但这似乎对hakiri警告的警告没有影响。

1 个答案:

答案 0 :(得分:0)

这是因为一种名为tainting的技术。

基本上,params对象被“污染”,因为它被标记为来自用户输入。

相反,您需要验证对象,然后自己解开它。这是一篇关于它的好文章:http://phrogz.net/programmingruby/taint.html