Java如何禁用exec等系统函数

用办法吗?
2025-04-25 06:09:22
推荐回答(2个)
回答1:

似乎是有可能配置 Java 2 Security 来做这件事,不过要知道配置这个文件是非常繁琐的事情,因为它相当于一个白名单,要把所有允许的都列出来,本来你只想禁用一个功能却需要列举很多种允许的事情,这会非常痛苦。你看是不是在 policytool 中除了 grant 之外还有 revoke 或 deny 之类的功能来设定黑名单。


比如可能导致 Java 反射这种平时允许的操作也无法正常工作。


在 JDK 目录下的 \bin 下面有一个 policytool 程序,启动它来创建你的 Java 2 Security Policy,然后在你的程序的命令行多加一个参数 -Djava.security.policy=你的policy文件路径(全名哦)


我觉得你设定这个 Java 程序启动时用指定的操作系统用户身份来运行可能更容易在操作系统方面控制它能访问什么程序,这样就算它执行了exec 也会被操作系统拦截的。




回答2:

JNI可以的