2013年10月22日

Java 7 update 45 與 Web Start JNLP 安全性問題解決方案

Java 7 安全性一直出包,所以 Oracle 頻繁更新修正漏洞。不過目前最新的 Update 45 對運行中的 Java Web Start 程式會有幾個重要影響。

參考資料:
  1. Update 45 Release Note
  2. Java 7 發行版本重點
  3. JNLP File Syntax

問題(一)、JNLP Property 設定無法傳遞

過去在 JNLP 可以直接使用 Property 設定。

<resources>
        <property name="config1.name" value="value1" />

Java7u45 只允許「javaws.」與「jnlp.」起始命名的設定,以及以下的例外。

    sun.java2d.noddraw,
    swing.useSystemFontSettings,
    swing.metalTheme,
    http.agent,
    http.keepAlive,
    sun.awt.noerasebackground,
    sun.java2d.opengl,
    sun.java2d.d3d,
    java.awt.syncLWRequests,
    java.awt.Window.locationByPlatform,
    sun.awt.erasebackgroundonresize,
    swing.noxp,
    swing.boldMetal,
    awt.useSystemAAFontSettings,
    sun.java2d.dpiaware,
    sun.awt.disableMixing,
    sun.lang.ClassLoader.allowArraySyntax

所以 JNLP 的 Property 設定必須全部更改為:

        <property name="javaws.config1.name" value="value1" />

或:

        <property name="jnlp.config1.name" value="value1" />

當然在其它程式碼存取 Sytstem.getProperty() 的參數也要一併修改。

問題(二)、Missing manifest attributes

打包 JAR 檔案時,需要增加以下 MANIFEST 屬性設定。

                    'Permissions'       : 'all-permissions',
                    'Codebase'          : 'http://url-to-codebase',
                    'Application-Name'  : 'AppName'

參考討論串:
http://stackoverflow.com/questions/19451356/whats-with-the-new-jnlp-missing-items-warnings-in-java-7

問題(三)、應用程式已被安全設定值封鎖

JAR 檔 MANIFEST 的 Codebase attribute 必須與 JNLP 指定的 JAR URL 來源一致,如果 javaws 發現實際下載 JAR 檔案的 URL 與 MANIFEST 設定不同,就會直接阻擋掉不能執行。

沒有留言:

張貼留言

lyhcode by lyhcode
歡迎轉載,請務必註明出處!