加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

在java中读取System.in的权限

发布时间:2020-12-14 19:23:48 所属栏目:Java 来源:网络整理
导读:我有一些代码使用下面的代码从控制台读取用户输入. Console console = System.console();String input = console.readLine(); 但是,此代码应在非常安全的环境中运行,其中每个操作的权限都通过策略文件控制. 所以我用策略文件测试了java代码 grant codeBase "
我有一些代码使用下面的代码从控制台读取用户输入.
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运行时中).

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读