小编Rob*_*ing的帖子

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

我有一个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万
查看次数

检测从不断言任何内容的 JUnit“测试”

我们曾经有一位技术总监,他喜欢贡献代码,也非常热衷于添加单元测试。不幸的是,他更喜欢的测试风格是产生一些输出来筛选并直观地检查结果。

鉴于我们有大量测试,是否有任何工具或技术可以用来识别从未断言的测试?

junit assert

5
推荐指数
1
解决办法
146
查看次数

标签 统计

assert ×1

java ×1

junit ×1

path-traversal ×1

security ×1