簡體   English   中英

在java中讀取System.in的權限

[英]Permission for reading System.in in java

我有一些代碼使用下面的代碼從控制台讀取用戶輸入。

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.inSystem.out文件描述符(0和1,其中2表示System.err )已經對JVM開放。 SecurityManager通過checkWrite(FileDescriptor fd)方法驗證您是否具有對打開文件描述符的寫訪問權限,並且類似地通過checkRead(FileDescriptor fd)方法具有讀訪問權限。 這些方法所需的RuntimePermission在javadocs中列出。

雖然“writeFileDescriptor”可能看起來多余,但是有必要初始化Console對象(至少在Oracle Java 7運行時中)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM