在此邮政有人在评论中提到,添加.:
到PATH
环境变量中是一个安全漏洞。添加.:
到CLASSPATH
环境变量中也是安全漏洞吗?
答案1
是的,这可能是一个安全漏洞。
放在.:
前面CLASSPATH
意味着 Java 会先使用当前目录下的类,然后再搜索其余路径CLASSPATH
。这意味着.class
当前目录或其子目录中的文件将用于替代几乎任何类或接口。例如,如果文件./java/lang/String.class
存在,则将使用它来替代标准String
类。
这意味着,如果您在运行 Java 程序时没有注意当前目录,那么该程序可能会在任何类的位置加载恶意类。
为了节省每次运行 Java 程序时费力检查当前目录的精力,您不应将系统设置为默认执行此操作。
如果在运行特定 Java 程序时要使用当前目录下的类,则通常应该跳过设置CLASSPATH
并改用-cp
参数java
,如下所示:
java -cp ".:…" …
这完全避免了通过CLASSPATH
环境变量影响其他 Java 程序。只有在您知道当前目录下的文件不是恶意文件的情况下才应该这样做。