在java中读取System.in的权限
我有一些代码,使用下面的代码从控制台读取用户输入在java中读取System.in的权限,java,security,Java,Security,我有一些代码,使用下面的代码从控制台读取用户输入 Console console = System.console(); String input = console.readLine(); 但是,此代码应该在非常安全的环境中运行,其中每个操作的权限都通过策略文件控制 因此,我使用策略文件对java代码进行了测试 grant codeBase "file:/myjar.jar" { permission java.security.AllPermission; }; 我不知道应该使用什
Console console = System.console();
String input = console.readLine();
但是,此代码应该在非常安全的环境中运行,其中每个操作的权限都通过策略文件控制
因此,我使用策略文件对java代码进行了测试
grant codeBase "file:/myjar.jar" {
permission java.security.AllPermission;
};
我不知道应该使用什么权限授予
console.readLine()
权限如果您在启用了SecurityManager
的JVM中使用System.console
,则需要以下运行时权限:
permission java.lang.RuntimePermission "readFileDescriptor";
permission java.lang.RuntimePermission "writeFileDescriptor";
为什么?
JVM已经打开了System.in
和System.out
文件描述符(0和1,其中2表示System.err
)。SecurityManager
验证您是否具有通过的对打开文件描述符的写入访问权限,以及类似地,您是否具有通过的读取访问权限。javadocs中列出了这些方法所需的RuntimePermission
虽然“writeFileDescriptor”看起来可能是多余的,但初始化Console对象(至少在Oracle Java 7运行时)是必需的