[英]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.in
和System.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.