Ruby on rails rails 4.1.0中的路径遍历攻击
我收到以下代码的Ruby on rails rails 4.1.0中的路径遍历攻击,ruby-on-rails,security,brakeman,Ruby On Rails,Security,Brakeman,我收到以下代码的文件访问警告: 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,导致对文
文件访问
警告:
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,导致对文件的访问
在指定的子目录之外
我尝试用以下方法清理参数:
if !params[:image_name].gsub(/\\/, '').index('../')
#my code
end
但这似乎对警告的警告没有影响。这种情况的发生是因为一种称为 基本上,
params
对象被“污染”,因为它被标记为来自用户输入
相反,您需要验证对象,然后自己将其卸载。这里有一篇关于它的好文章:对不起,ircmaxell!我使用了这个:
$SAFE=1,如果参数[:image\u name]=~“^[\w\-.]+$”参数[:image\u name]。卸载
,但对警告没有影响。