0

有一个脚本可以从用户那里获取目录。如何检查用户是否试图获得比公用文件夹更高的级别?

例如,我试图检测空字符串,所以如果我输入"?directory=/"=> 我会进入根目录。比我试图检查公用文件夹的路径是否在路径中。再次 => "?directory=/home/user/app/public/../../../../../"=> 再次我在根目录中。

如何测试它并拒绝访问?

4

1 回答 1

0

尝试这个:

def path_valid?(path, base = Rails.public_path)
  expanded_path_name = Pathname.new(path).realpath.to_s
  expanded_path_name.starts_with? base
end

Pathname#realpath将解析到绝对路径的路径,以及进行符号链接解析。这将让您准确测试要操作的文件的路径在哪里,并确保它在给定路径内。

于 2013-07-18T01:56:10.023 回答