当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


erlang safe_relative_path(Filename, Cwd)用法及代码示例


safe_relative_path(Filename, Cwd) -> unsafe | SafeFilename
OTP 23.0
类型:
Filename = Cwd = SafeFilename = filename_all()

通过消除 ".." 和 "." 组件来清理相对路径,以防止目录遍历攻击。或者返回清理后的路径名,或者返回原子 unsafe(如果路径不安全)。在以下情况下,该路径被认为是不安全的:

  • 该路径不是相对的。

  • ".." 组件将爬到相对路径的根部上方。

  • 路径中的符号链接指向相对路径的根目录之上。

例子:

1> {ok, Cwd} = file:get_cwd().
...
2> filelib:safe_relative_path("dir/sub_dir/..", Cwd).
"dir"
3> filelib:safe_relative_path("dir/..", Cwd).
[]
4> filelib:safe_relative_path("dir/../..", Cwd).
unsafe
5> filelib:safe_relative_path("/abs/path", Cwd).
unsafe

相关用法


注:本文由纯净天空筛选整理自erlang.org大神的英文原创作品 safe_relative_path(Filename, Cwd) -> unsafe | SafeFilename。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。