2017-02-09 35 views
35

我在簽名的Java小程序中具有以下清單信息。我的構建環境比較陳舊,目前僅限於JDK 1.6。警告依賴於Caller-Allowable-Codebase屬性始終未顯示

Manifest-Version: 1.0 
Implementation-Vendor: Foo, Inc. 
Application-Library-Allowable-Codebase: * 
Application-Name: FooBar 
Permissions: all-permissions 
Sealed: true 
Created-By: 1.6.0_20 (Sun Microsystems Inc.) 
Caller-Allowable-Codebase: * 
Codebase: https://* 

根據Java documentation -

如果獨立的星號(*)或具有頂級 域中使用一個星號,如*。組織被指定爲 值Caller-Allowable-Codebase屬性,然後從JavaScript代碼 調用您的RIA顯示安全警告。用戶可以選擇允許 呼叫或阻止呼叫。記住選擇的選項也是 提供。如果用戶選擇記住該選項,則當它從同一來源的JavaScript代碼接收到呼叫 時,將不會再顯示相同RIA的警告消息。

我的Web應用程序中的Java腳本代碼依賴於來自Applet的返回代碼,以在門戶上顯示適當的狀態。顯示的消息取決於返回的狀態代碼。但是爲了發生這種情況,應該會出現Java警告窗口。在Firefox v51 & JRE 1.8.121中,有時會出現此警告窗口。如果沒有,則JavaScript和Applet之間的通信不存在。什麼可能是警告窗口不會一直出現的問題?

+0

你能提供一個可重複的例子嗎?請參閱https://stackoverflow.com/help/mcve和http://sscce.org/ 此外,您是否調試過(調試日誌記錄等),以便知道發生了什麼事情,當您不*獲取警告對話框時? – pyb

+0

Java小應用程序是舊的,並將在java 9中被棄用,而且瀏覽器正在移除對java插件的支持 – niceman

+0

如果可能的話,用HTML5和JS重新構建前端,可能使用jQuery來調用Web應用程序的AJAX,它正確。如果沒有,你的產品是非常註定的。另外,你的配置對你的Applet來說是非常不安全的 - 任何代碼庫,全部權限。我真的希望你能夠很好地驗證,因爲那只是乞求代碼注入攻擊。這是小蘋果無法繼續使用的主要原因之一 - 缺乏體面的安全性。 – TinkerTenorSoftwareGuy

回答

1

我使用相同的實時連接方法在applet和Javascript之間進行通信。在過去的幾年中,我從JRE6u45到目前的JRE8u131都遇到過許多不同的警告屏幕。這取決於您現在面臨的警告屏幕。

你每次都用Firefox嗎?自從某個版本see here以後,Firefox不支持Java插件。僅供參考,Chrome和MS Edge不支持Java Applet。請檢查您是否沒有使用它們。

調用者允許的代碼庫屬性不應該觸發任何警告。如果它沒有正確包含域,它應該阻止小程序運行。應該沒有警告信息允許您運行。

一般而言,大多數警告屏幕來自JRE而不是瀏覽器。因此您還可以檢查以下項目:

  • 代碼簽名證書有效且未過期。
  • 轉到Java控制面板,清除小程序緩存(在常規選項卡)
  • 啓用Java檢驗內容(安全選項卡)
  • 恢復安全提示(安全選項卡)
  • 啓用混合代碼,如果以示警告需要(高級選項卡)
  • 啓用日誌記錄和跟蹤,顯示Java控制檯(Java控制面板 - >安全選項卡)

請提供更多細節屏幕或警告你的消息。