标签: path-traversal

什么是防御路径遍历攻击的最佳方法?

我有一个Java服务器实现(TFTP,如果它对你很重要),我想确保它不容易受到路径遍历攻击,允许访问不应该可用的文件和位置.

到目前为止,我最好的防守尝试是拒绝任何匹配的条目,File.isAbsolute()然后依赖于File.getCanonicalPath()解决路径中的任何.././组件.最后,我确保生成的路径仍在我的服务器所需的根目录中:

public String sanitize(final File dir, final String entry) throws IOException {
    if (entry.length() == 0) {
        throw new PathTraversalException(entry);
    }

    if (new File(entry).isAbsolute()) {
        throw new PathTraversalException(entry);
    }

    final String canonicalDirPath = dir.getCanonicalPath() + File.separator;
    final String canonicalEntryPath = new File(dir, entry).getCanonicalPath();

    if (!canonicalEntryPath.startsWith(canonicalDirPath)) {
        throw new PathTraversalException(entry);
    }

    return canonicalEntryPath.substring(canonicalDirPath.length());
}
Run Code Online (Sandbox Code Playgroud)

是否存在未命中的安全问题?是否更好/更快地可靠地实现相同的结果?

代码需要在Windows和Linux上一致地工作.

java security path-traversal

38
推荐指数
2
解决办法
2万
查看次数

在Java(或Scala)中过滤向上路径遍历

是否有任何的标准库的方法,可以筛选出的路径,其中包括特殊遍历序列,如../和向上目录遍历所有其他回旋形式,从遍历维护文件路径API输入向上给定的"根"的路径?

我有一个包含根文件夹值成员的类,以及一个接受递归删除路径的成员函数.我的目标是使这个API安全,过滤掉提供给它的任何输入路径 - 这将转换为根文件夹值以上的路径.目的是这个类将被广泛用于删除根路径下的文件,但它永远不会触及根路径上的任何东西.

这类似于更广泛的路径遍历攻击.

方法太多的限制(即可能导致假阴性)可能是罚款,我的具体使用情况,如果此简化了的事情,而且,我目前的需求是文件系统路径不是网络的人(虽然,对于相当于一个Web模块在理论上可以在这里工作).

java owasp secure-coding path-traversal

13
推荐指数
2
解决办法
5929
查看次数

标签 统计

java ×2

path-traversal ×2

owasp ×1

secure-coding ×1

security ×1