You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java中如何阻止访问".."上级目录以规避安全风险?

解决路径遍历安全问题的无手动过滤方案
  • 用Path API做路径归属验证
    先把允许的根文件夹转为绝对路径并标准化,再将用户输入的路径片段解析到该根路径下,最后检查解析后的路径是否以根路径为前缀。示例代码:

    Path allowedRoot = Paths.get("/your/allowed/folder").toAbsolutePath().normalize();
    Path resolvedPath = allowedRoot.resolve(userProvidedPath).normalize();
    
    if (!resolvedPath.startsWith(allowedRoot)) {
        throw new SecurityException("禁止访问该路径");
    }
    

    这个方法会自动处理../这类相对路径,不用手动过滤特殊字符,从根源上避免路径遍历。

  • 依赖操作系统权限控制
    让运行程序的系统账号仅拥有目标文件夹的读写权限,即便路径遍历逻辑出现疏漏,操作系统层面也会拦截对受限文件的访问。这是兜底的安全措施,建议和代码验证配合使用。

  • 禁止直接拼接路径字符串
    全程使用Path类的方法处理路径(比如resolve()),不要用字符串拼接生成路径,能减少路径注入的风险。

内容的提问来源于stack exchange,提问作者NGS

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.25 14:03:13