我收到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警告的警告没有影响。
答案 0 :(得分:0)
这是因为一种名为tainting的技术。
基本上,params
对象被“污染”,因为它被标记为来自用户输入。
相反,您需要验证对象,然后自己解开它。这是一篇关于它的好文章:http://phrogz.net/programmingruby/taint.html