Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/395.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在java中读取System.in的权限_Java_Security - Fatal编程技术网

在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运行时)是必需的