2017-02-09 16 views
35

Tôi có thông tin kê khai sau trong ứng dụng Java đã ký. Môi trường xây dựng của tôi đã cũ và hiện bị hạn chế đối với JDK 1.6.Cảnh báo dựa vào thuộc tính Caller-Allowable-Codebase không được hiển thị luôn luôn

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://* 

Theo Java documentation -

Nếu một dấu hoa thị độc lập (*) hoặc dấu hoa thị sử dụng với một tên miền cấp cao như * .org được quy định như giá trị cho Thuộc tính Caller-Allowable-Codebase, sau đó gọi từ mã JavaScript đến RIA của bạn hiển thị cảnh báo bảo mật. Người dùng có thể chọn để cho phép cuộc gọi hoặc chặn cuộc gọi. Tùy chọn để nhớ lựa chọn cũng được cung cấp . Nếu người dùng chọn ghi nhớ lựa chọn, không có thông báo cảnh báo nữa được hiển thị cho cùng một RIA khi nhận được cuộc gọi từ mã JavaScript từ cùng một nguồn.

Mã script Java trong ứng dụng web của tôi dựa trên mã trả về từ Applet để hiển thị trạng thái thích hợp trên cổng. Các thông báo được hiển thị khác nhau tùy thuộc vào mã trạng thái được trả về. Nhưng để điều này xảy ra, cửa sổ cảnh báo Java sẽ xuất hiện. Trong Firefox v51 & JRE 1.8.121, cửa sổ cảnh báo này hiển thị đôi khi. Khi không, giao tiếp giữa JavaScript và Applet không có. Điều gì có thể là vấn đề mà cửa sổ cảnh báo không xuất hiện tất cả các thời gian?

+0

Bạn có thể cung cấp ví dụ tái sản xuất không? Xem https://stackoverflow.com/help/mcve và http://sscce.org/ Ngoài ra, bạn đã sửa lỗi (gỡ lỗi đăng nhập, v.v.) để biết điều gì đang xảy ra khi bạn * không * nhận được hộp thoại cảnh báo ? – pyb

+0

Java applet cũ và sẽ không được chấp nhận trong java 9, còn các trình duyệt đang loại bỏ hỗ trợ cho plugin java – niceman

+0

Nếu có thể, hãy xây dựng lại front-end của bạn trong HTML5 và JS, có thể sử dụng jQuery cho các cuộc gọi AJAX đến ứng dụng web của bạn và cấu trúc nó đúng. Nếu không, sản phẩm của bạn là rất thất vọng. Ngoài ra, cấu hình của bạn là rất không an toàn cho Applet của bạn - bất kỳ codebase, tất cả các quyền. Tôi thực sự hy vọng bạn xác nhận tốt, bởi vì đó chỉ là cầu xin cho một cuộc tấn công mã tiêm. Đó là một trong những lý do chính Applet đã ngưng anyway - thiếu an ninh phong nha. – TinkerTenorSoftwareGuy

Trả lời

1

Tôi đang sử dụng cùng một phương thức kết nối trực tiếp để liên lạc giữa applet và Javascript. Tôi đã xem qua nhiều màn hình cảnh báo khác nhau trong vài năm qua từ JRE6u45 cho tới JRE8u131 hiện tại. Nó phụ thuộc vào màn hình cảnh báo bạn đang phải đối mặt.

Bạn có sử dụng Firefox mọi lúc không? Firefox không hỗ trợ plugin Java từ một phiên bản nhất định see here. FYI, Chrome và MS Edge không hỗ trợ Java Applet. Vui lòng kiểm tra xem bạn có đang sử dụng chúng không.

Thuộc tính Caller-Allowable-Codebase không được kích hoạt bất kỳ cảnh báo nào. Nó sẽ chặn các applet chạy nếu nó không bao gồm tên miền chính xác. Không nên có thông báo cảnh báo cho phép bạn chạy.

Thông thường, hầu hết các màn hình cảnh báo đến từ JRE thay vì trình duyệt. Vì vậy, bạn cũng có thể kiểm tra các mục sau:

  • cert ký mã hợp lệ và chưa hết hạn.
  • Đến Java Control Panel, xóa bộ nhớ cache Applet (Trong Tab General)
  • Enable nội dung Java sẽ được kiểm tra (Security Tab)
  • Restore an Prompts (Security Tab)
  • Bật mã hỗn hợp để hiển thị cảnh báo nếu cần thiết (Advanced Tab)
  • Enable logging và tracing, chương trình Java console (Java Control Panel -> Security Tab)

Vui lòng cung cấp thêm chi tiết màn hình hoặc thông điệp cảnh báo mà bạn có.

Các vấn đề liên quan