通过网页删除的文件名卫生

时间:2015-11-25 13:35:24

标签: security web-applications

如果我们的网页能够读取或删除某个文件夹中的文件(基于名称),例如:'public/upload/',我们必须使用哪种过滤来防止出现安全问题?

例如在Ruby / Sinatra中:

file_name = params[:file_name]
base_dir = 'public/upload/'
# prevent user from entering ../../../../../etc/passwd or any other things
file_name.gsub!('../','') 
File.delete "#{base_dir}/#{file_name}"

够了吗?

1 个答案:

答案 0 :(得分:1)

这种过滤总是容易出错。但是,一些可行的,但我不能说是防弹的,就是这样:

Preventing Directory Traversal in PHP but allowing paths

Ruby有类似于php" realpath" AFAIK。

OWASP也对如何防止路径遍历有所了解: https://www.owasp.org/index.php/File_System#Path_traversal

以及如何利用路径遍历的示例: https://www.owasp.org/index.php/Path_Traversal