在java中读取System.in的权限

前端之家收集整理的这篇文章主要介绍了在java中读取System.in的权限前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一些代码使用下面的代码从控制台读取用户输入.
Console console = System.console();
String input = console.readLine();

但是,此代码应在非常安全的环境中运行,其中每个操作的权限都通过策略文件控制.

所以我用策略文件测试了java代码

grant codeBase "file:/myjar.jar" {
   permission java.security.AllPermission;
};

我不知道我应该使用什么权限来授予console.readLine()的权限.

解决方法

如果您在启用了SecurityManager的JVM中使用System.console,则需要以下RuntimePermissions:
permission java.lang.RuntimePermission "readFileDescriptor";
permission java.lang.RuntimePermission "writeFileDescriptor";

为什么?

System.in和System.out文件描述符(0和1,其中2表示System.err)已经对JVM开放. SecurityManager通过checkWrite(FileDescriptor fd) method验证您是否具有对打开文件描述符的写访问权限,并且类似于您通过checkRead(FileDescriptor fd) method具有读访问权限.这些方法所需的RuntimePermission在javadocs中列出.

虽然“writeFileDescriptor”可能看起来多余,但是有必要初始化Console对象(至少在Oracle Java 7运行时中).

原文链接:https://www.f2er.com/java/444643.html

猜你在找的Java相关文章