类型: 安全缺陷

    应用程序对用户可控制的输入未经合理校验,就传送给一个文件API。攻击者可能会使用一些特殊的字符(如..和/)摆脱受保护的限制,访问一些受保护的文件或目录。
    例如:下面代码片段通过验证输入路径是否以/safe_dir/为开头,来判断是否进行创建、删除操作。

    1. String path = getInputPath();
    2. if (path.startsWith("/safe_dir/")){
    3. File f = new File(path);
    4. f.delete()
    5. }

    攻击者可能提供类似下面的输入:
    /safe_dir/../important.dat
    程序假定路径是有效的,因为它是以/safe_dir/开头的,但是../将导致程序删除important.dat文件的父目录。