【发布时间】:2016-01-10 01:35:33
【问题描述】:
是否有任何标准库方法可以过滤掉包含特殊遍历序列的路径,例如 ../ 和所有其他复杂形式的向上目录遍历,以防止文件路径 API 输入向上遍历 em> 给定的“根”路径?
我有一个包含根文件夹值成员的类,以及一个接受递归删除路径的成员函数。我的目标是使这个 API 安全,过滤掉提供给它的任何输入路径 - 这将转换为根文件夹值的路径 upwards。目的是该类将被广泛用于删除根路径下的文件,但它永远不会触及根路径之上的任何内容。
这类似于更广泛的path traversal attack。
对于我的特定用例来说,过于严格的方法(即可能导致误报)可能没问题,如果这可以简化事情,而且,我当前的需求是文件系统路径而不是 web 路径(尽管,web 模块出于同等的考虑,理论上可能在这里有效)。
【问题讨论】:
-
你如何将这些路径暴露给网络?一般来说,像 Spring 这样的框架在缓解这些攻击方面做得相当不错,因此您很少需要在其上添加任何其他安全层。
-
我不是。这是一个后端devops相关的API,其中包含一些文件删除逻辑,它需要避免在没有OS文件系统权限的帮助下删除给定根文件夹之外的文件。
-
我们在这里谈论什么样的路径?例如,
java.nio.file.Path具有将相对文件路径合并到基础上的方法。 -
这可能是一次攻击仍有一些差距。我可以看到它如何成为一个关注,但如果它是一种攻击,那么你必须首先没有正确实现路径遍历。给我们一个 DELETE 请求的例子。
-
顺便说一句 - 我已经删除了对图书馆的请求,因为这是其他人试图结束这个问题的一个重要原因。它有潜力,但添加库位使其成为一个巨大的目标。
标签: java owasp secure-coding path-traversal