[英]Where to place java applet policy file?
我正在開發一個人工智能項目,這是一個邏輯游戲,目標是兩個用戶連接到網絡上充當管理員的服務器,然后逐個開始玩。
為了創建連接,我有一個服務器代碼,它只是在localhost:8000上監聽,並在客戶端到達時為其分配團隊值。 連接后,客戶端可以在Admin的控制下進行移動。
問題是,當我嘗試將我的代碼放在瀏覽器中工作時,它失敗並出現以下錯誤:
java.security.AccessControlException: access denied (java.net.SocketPermission 127.0.0.1:8000 connect,resolve)
即使我已經創建了自己的策略,首先只授予對我的項目文件夾的代碼庫( file:///home/xxx/projects/-
)的Socket訪問權限,在它不起作用之后,我授予了 所有代碼庫的所有權限。 我嘗試將我的策略文件放在主目錄和我的applet代碼所在的同一目錄中。
感謝任何提示,謝謝。
默認情況下,我認為它會在您的主目錄中查找名為.java.policy的文件
您可以檢查文件/lib/security/java.security以查看它的外觀。 檢查名為policy.url.n的密鑰
您可以使用此命令行選項設置安全策略文件的位置
-Djava.security.policy=policyfilepath
用java
命令。
或者您甚至可以使用System.setProperty()
過程設置此屬性。
將策略文件放在JRE所在的位置。
例如,我的策略文件位於C:\\ Program Files \\ Java \\ jre1.6.0_01 \\ lib \\ security
我強烈建議尊重同源政策。 在最好的情況下,安全影響不一定是顯而易見的。 此外,具有標准權限的applet具有更好的可用性,並且應該更易於維護。
如果您授予特定JAR(代碼庫)的權限,則僅當從線程開始到方法調用的整個執行堆棧位於該代碼庫/保護域中時,此方法才有效。
如果您的方法是圖書館,並且您確定安全地訪問了該操作,則可以使用Priratedged Block,它基本上可以確保在訪問計算中不考慮調用塊的堆棧部分。
特權塊,如下所述:
http://docs.oracle.com/javase/6/docs/technotes/guides/security/doprivileged.html
問候貝恩德
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.