我們正在開發一個applet,並需要它能夠讀/寫用戶臨時文件目錄中的文件(例如C:\ Documents and Settings \ USERNAME \ Local Settings \ Temp)。必須授予小程序寫入臨時文件的權限?
該applet已簽名,用戶在applet啓動時單擊'allow'選項,並且Java控制面板具有「允許用戶授予簽名內容的權限」和「允許用戶授予來自不受信任權限的內容的權限「啓用。
然而,在啓動時,我們得到一個SecurityException:
java.lang.SecurityException: Unable to create temporary file
at java.io.File.checkAndCreate(Unknown Source)
at java.io.File.createTempFile(Unknown Source)
at java.io.File.createTempFile(Unknown Source)
at com.jniwrapper.util.AppletHelper.b(SourceFile:104)
at com.jniwrapper.util.AppletHelper.a(SourceFile:79)
at com.jniwrapper.util.AppletHelper.b(SourceFile:50)
at com.jniwrapper.util.AppletHelper.init(SourceFile:122)
at com.x.Y.init(Y.java:31)
at sun.plugin2.applet.Plugin2Manager$AppletExecutionRunnable.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
Exception: java.lang.SecurityException: Unable to create temporary file
如果我們編輯java.policy文件授予所有的一切,則小程序工作正常,但這個顯然是不安全的。我們必須授予什麼最小權限才能允許小程序在用戶的臨時文件目錄中讀取/寫入/創建文件?
您是否知道該權限的策略文件條目?我有我無法更改的代碼,我需要應用此策略。 – LostMohican 2015-09-30 17:25:05
應該是這樣的, 授予{0}權限java.io.FilePermission「/ directory」,「讀取,寫入」; }; 如果你不想離開這個你不應該作爲一個漏洞的安全漏洞,你應該簽署該jar並執行授予原則或至少授予代碼庫。 – Keibosh 2016-03-14 18:03:31