Cách làm cho mã Java của bạn được tin cậy trong Internet Explorer


Lưu ý Microsoft Java Virtual Machine (MSJVM) và Microsoft SDK for Java không còn sẵn dùng để phân phối từ Microsoft. Sẽ không có cải tiến nào đối với MSJVM hoặc SDK cho Java. Để biết thêm thông tin về các tài nguyên dành cho nhà phát triển Java, hãy ghé thăm web site sau của Microsoft:

TỔNG KẾT


Cân nhắc một số yếu tố khi bạn muốn làm cho mã Java của mình được tin cậy hoàn toàn, tin cậy một phần hoặc không đáng tin cậy trong Microsoft Internet Explorer. Bài viết này giải thích về nhiều cân nhắc, và nó chỉ đến một số tài nguyên có thể giúp đảm bảo mã Java của bạn có mức độ tin cậy chính xác khi nó được thực thi trong trình duyệt.

THÔNG TIN BỔ SUNG


Bộ nạp lớp học

Điều quan trọng là phải hiểu rõ ý nghĩa của bộ nạp lớp trong Java. Bộ nạp lớp kiểm soát nhiều tính bảo mật và quyền truy nhập được cấp cho lớp. Bài viết sau đây trong cơ sở tri thức Microsoft giải thích khi Microsoft Virtual Machine (Microsoft VM) sử dụng bộ tải khác nhau:
177168 Làm thế nào để tìm kiếm máy ảo cho các lớp học Java?
Với thông tin này, bạn có thể đưa ra quyết định thông báo thêm về phương pháp đạt được quyền bổ sung phù hợp nhất đối với dự án của bạn.

Điều đó nghĩa là gì đáng tin cậy

Thuật ngữ tin cậy có nghĩa là mã này không còn được giới hạn trong hộp cát Java. Sandbox hạn chế mã không đáng tin cậy khỏi việc thực hiện thành công các thao tác tin cậy, chẳng hạn như:
  • Gọi mã bản địa
  • Sử dụng COM
  • Sử dụng J/Direct
  • Kết nối với máy tính từ xa
  • Tay
  • Sử dụng JDBC
  • Tạo các cửa sổ mức cao nhất không có appletwarning
Đối với các lớp học của bạn để chạy với quyền ở phía trên mức sandbox, các lớp học phải được chuyển đến máy khách bên trong tệp cabinet đã ký (CAB). Khi bạn ký vào tệp CAB, bạn cũng phải xác định các quyền mà có chứa các lớp cần thiết. Có ba mức quyền được xác định trước (thấp, Trung bình và cao) trong Microsoft Internet Explorer 4.x:
  • Các quyền cao tương đương với hộp cát Java. Lợi thế của việc đăng nhập vào tình huống này là bạn có thể đảm bảo rằng người dùng không có mã số mà bên thứ ba không thay đổi mã.
  • Các quyền trung bình giống như cao, nhưng cho phép truy nhập vào vùng đầu trên máy tính cục bộ.
  • Quyền thấp cơ bản cho phép quyền truy nhập tất cả các hoạt động được liệt kê trước đó.

Cho phép khẳng định

Bài viết cơ sở kiến thức sau đây cung cấp đủ thông tin để hiểu được khi nào, tại sao và cách bạn có thể khẳng định quyền trong mã Java của mình:
175622 Ngoại lệ SecurityExceptionEx chạy applet java

Tạo tệp cabinet (CAB)

Bây giờ bạn hiểu được khái niệm về bộ tải, tin cậy và quyền, bước tiếp theo là biết cách tạo tệp cabinet (CAB). Ở giai đoạn này, bạn cần quyết định liệu bạn có muốn cài đặt mã của mình trên máy tính của người dùng hay không, chỉ cần đóng gói mã của bạn trong một tệp CAB để tải xuống nhanh hơn trên mỗi lần truy cập vào trang của bạn. Nếu bạn không muốn cài đặt mã của mình lên máy tính cục bộ, bạn có thể chỉ cần tạo một tệp CAB bằng cách dùng tiện ích Cabarc. exe và tham chiếu CAB từ một tham số được chuyển đến applet của bạn từ HTML. Điều này được hiển thị trong mẫu 1 ở phần sau trong bài viết này. Lưu ý Phương pháp này không yêu cầu bạn ký vào tệp CAB nếu bạn không cần mã của mình để chạy với tư cách là đáng tin cậy. Bạn vẫn có thể đạt được những lợi ích của việc có một tệp được nén đơn thay vì các tệp lớp riêng lẻ. Nếu bạn muốn cài đặt mã của mình trên máy tính cục bộ, có hai phương pháp tiếp cận. Một cách là tạo một đơn vị phân phối (DU) bằng cách sử dụng tiện ích Dubuild. exe trong SDK for Java. Tiện ích này sẽ tạo ra một tệp CAB và bao gồm một tệp được tạo tự động. OSD. Xem mẫu 2 ở phần sau trong bài viết này. Phương pháp khác để cài đặt mã trên máy tính cục bộ là dùng tệp. inf. Phương pháp này hơi nhiều hơn về cách thủ công và dễ hiểu hơn, nhưng có lợi thế riêng biệt là phương pháp duy nhất hoạt động trên Internet Explorer 3.x trở lên. Xem mẫu 3 ở phần sau trong bài viết này. Mỗi phương pháp này có lợi thế là tải về mã của bạn trong chuyến thăm đầu tiên của trang và không yêu cầu tải xuống khác vào các truy nhập tiếp theo, trừ khi một phiên bản mới hơn sẽ sẵn dùng. Tuy nhiên, họ sẽ yêu cầu một số không gian cố định trên ổ đĩa cục bộ của người dùng.

Sử dụng chữ ký số trên tệp CAB của bạn

Bạn cần đăng ký của bạn bất cứ khi nào mã của bạn cần làm điều gì đó bên ngoài của hộp cát Java hoặc bất cứ khi nào bạn muốn cài đặt mã cho máy tính cục bộ từ một trang web. Bạn ký một CAB bằng cách dùng tiện ích mã đăng ký. exe trong SDK for Java. Các mẫu ở phần sau trong bài viết này cho thấy một vài kịch bản ký kết chung. Bạn có thể tìm thấy thông tin bổ sung trong mục tìm kiếm "Tệp Cabinet với quyền Java" chủ đề của tài liệu SDK cho Java và các mẫu ở vị trí sau đây: Trong SDK, bấm vào chỉ mục rồi bấm S. cuộn để tìm "ký các tệp cabinet với quyền Java". Sau đây là một vài điểm chính cần ghi nhớ:
  • Các quyền Java hạt mịn đã được thêm vào các ứng dụng MicrosoftVM và các công cụ ký trong SDK cho Java 2,0 trở lên.
  • Sử dụng các quyền Fine-grained có thể giúp giới hạn exposurecủa bạn như một nhà phát triển của một gói Java bằng cách giảm quyền truy nhập được phép đến baretối thiểu do dự án của bạn yêu cầu.
  • Các quyền Fine-grained được yêu cầu bằng cách sử dụng tệp. inifile tại thời điểm ký. Xem tài liệu SDK cho Java có tiêu đề "tham khảo các giá trị JavaPermissions. ini" để biết thêm thông tin.
Cuối cùng, bạn có thể sử dụng chứng chỉ kiểm tra cho các mục đích phát triển (như được thấy trong các mẫu ở phần sau trong bài viết này), nhưng một chứng chỉ thực sẽ được mong muốn trước khi triển khai ứng dụng của bạn. Có thể thu được chứng chỉ thực bằng một cơ quan cấp chứng chỉ. VeriSign hiện đang phát hành chứng chỉ đầy đủ bảo mật để dùng với mã xác thực. Bạn có thể liên hệ với VeriSign tại vị trí sau đây: Để biết thêm thông tin về cách tạo, làm thế nào để xem và cách quản lý chứng chỉ, truy cập trang web mạng Microsoft Developer Network (MSDN) sau đây:

Thẻ để tham chiếu đến tệp CAB đã ký của bạn

Có một vài tùy chọn để tham chiếu đến tệp CAB đã ký của bạn trong HTML. Sau đây là danh sách và so sánh tóm tắt về các phương pháp khác nhau:
  • tham số cabbase vào thẻ APPLET
  • Cabinets tham số vào thẻ APPLET.
  • useslibrary, useslibrarycodebase và useslibraryversiontham số vào thẻ APPLET
  • tham số cabbase vào thẻ đối tượng
  • Các tham số về tủ vào thẻ đối tượng
  • useslibrary, useslibrarycodebase và useslibraryversiontham số vào thẻ đối tượng

Mã tin cậy trong Internet Explorer cho Macintosh

Mã xác thực không được hỗ trợ trong Internet Explorer cho Macintosh. Để cho phép truy nhập mã đã tải xuống bên ngoài hộp cát Java, người dùng phải thêm máy chủ vào danh sách các site tin cậy rồi đặt quyền của site cho những người mà mã đó yêu cầu.

THÍ

Bạn có thể sử dụng lớp Java sau đây với ba mẫu ngắn sau đây. Cắt và dán văn bản này vào một tệp có tên đơn giản. Java. Lưu ý Đảm bảo bạn có phiên bản JVC. exe trong đường dẫn của bạn từ SDK cho Java 2,0 (bản dựng 4337) trở lên. Lớp này sẽ đơn giản khẳng định quyền và hiển thị một Win32 MessageBox khi chạy:
package simple;import com.ms.security.*;public class Simple extends java.applet.Applet{  public void init()  {    try {      if (Class.forName("com.ms.security.PolicyEngine") != null)        PolicyEngine.assertPermission(PermissionID.SYSTEM);    } catch (Throwable cnfe) {  }    try {          MessageBox(0, "MessageBox successfully called.", "Java", 0);      } catch (UnsatisfiedLinkError ule) {          System.err.println("Caught exception: " + ule);          System.err.println("Probably wrong version of Java                             compiler.");      }  }  /** @dll.import("USER32") */   static native int MessageBox(int    hwndOwner,                               String text,                               String title,                               int    style);}
Lưu ý Linefeed được chèn vào dòng lệnh cho mã đăng ký. exe bên dưới. Những dòng lệnh này quá dài để vừa với một dòng trong cơ sở kiến thức Microsoft, nhưng phải được sửa trong các tệp hàng loạt của bạn thành một dòng đơn.

Mẫu 1-Simple1

Mẫu này hiển thị một tệp CAB đã ký mà không cài đặt vào máy tính cục bộ. Bạn có thể sử dụng các lệnh dưới đây để biên dịch đơn giản. Java, tạo một tệp CAB có chứa đơn giản. Class, bật gốc kiểm tra trên máy tính cục bộ, tạo chứng chỉ kiểm tra, đăng nhập tệp CAB với quyền Java thấp bằng cách sử dụng chứng chỉ kiểm tra và khởi động trang Simple1. html trong trình duyệt. Cắt và dán các lệnh này vào một tệp lô có tên là go1. bat và lưu nó vào cùng một thư mục với tệp đơn giản. Java được tạo ở trên:
jvc /d . Simple.javacabarc -p n mycab1.cab simple/Simple.classdel simple\Simple.classsetreg 1 truemakecert -sk MyKeyName -n "CN=My Publisher Name" MyTestCert.cercert2spc MyTestCert.cer MyTestCert.spcsigncode -j javasign.dll -jp LOW -spc MyTestCert.spc -k MyKeyName  mycab1.cabstart Simple1.html
Trước khi bạn thực thi go1. bat, cắt và dán HTML dưới đây vào một tệp có tên là Simple1. html và đặt nó trong cùng một thư mục với các tệp có tên là Simple. Java và go1. bat đã được tạo trước đó:
<HTML> <APPLET CODE="simple.Simple" WIDTH=100 HEIGHT=100> <PARAM NAME="cabbase" VALUE="mycab1.cab"> </APPLET></HTML>
Lưu ý Tham số "Cabinets" hoạt động được interchangeably bằng tham số "cabbase" trên máy tính chạy Internet Explorer 4,0 trở lên. Tham số "Cabinets" có các tính năng bổ sung cho phép nhiều tệp CAB được tham chiếu từ thẻ APPLET tương tự.

Mẫu 2-Simple2

Mẫu này hiển thị tệp CAB đã ký được cài đặt vào trình quản lý gói Java (JPM) trên máy tính cục bộ. Bạn có thể sử dụng các lệnh dưới đây để biên soạn Simple. Java, tạo một tệp CAB có chứa tệp đơn giản. lớp học và tệp được tạo ra. OSD, bật gốc kiểm tra trên máy tính cục bộ, tạo chứng chỉ kiểm tra, đăng nhập tệp CAB với quyền Java thấp bằng cách sử dụng chứng chỉ kiểm tra và khởi động trang Simple2. html trong trình duyệt. Cắt và dán các lệnh này vào một tệp lô có tên là Go2. bat và lưu nó vào cùng một thư mục với tệp đơn giản. Java được tạo trước đó:
jvc /d . Simple.javadubuild mycab2.cab . /D "JPM Simple2" /I *.class /V 1,1,23,0del simple\Simple.classsetreg 1 truemakecert -sk MyKeyName -n "CN=My Publisher Name" MyTestCert.cercert2spc MyTestCert.cer MyTestCert.spcsigncode -j javasign.dll -jp LOW -spc MyTestCert.spc -k MyKeyName  mycab2.cabstart Simple2.html
Trước khi bạn thực hiện Go2. bat, cắt và dán HTML dưới đây vào một tệp có tên là Simple2. html và đặt nó trong cùng một thư mục với các tệp có tên đơn giản. Java và Go2. bat đã tạo trước đó:
<HTML> <APPLET code="simple.Simple" WIDTH=100 HEIGHT=100> <PARAM NAME=useslibrary VALUE="JPM Simple2"> <PARAM NAME=useslibrarycodebase VALUE="mycab2.cab"> <PARAM NAME=useslibraryversion VALUE="1,1,23,0"> </APPLET></HTML>
Sau khi đã cài đặt một gói trên máy tính cục bộ bằng cách dùng JPM, nó sẽ có mặt trong "<windir> \Program Files" (thư mục). Sử dụng thư mục này để xem và loại bỏ các gói được cài đặt bằng Internet Explorer.

Mẫu 3-Simple3

Mẫu này hiển thị tệp CAB đã ký đã cài đặt tệp đơn giản. Class trong <windir> \javn\lib\simple Directory trên máy tính cục bộ. Bạn có thể sử dụng các lệnh dưới đây để biên soạn Simple. Java, tạo một tệp CAB có chứa tệp đơn giản. Class và tệp. inf mà bạn tạo, cho phép gốc kiểm tra trên máy tính cục bộ, tạo chứng chỉ kiểm tra, ký vào tệp CAB với quyền Java thấp bằng cách sử dụng chứng chỉ kiểm tra và khởi động trang Simple3. html trong trình duyệt. Cắt và dán các lệnh này vào một tệp lô có tên là go3. bat và lưu nó vào cùng một thư mục với tệp đơn giản. Java được tạo trước đó:
jvc /d . Simple.javacabarc -p n mycab3.inner.cab simple/Simple.classdel simple\Simple.classcabarc n mycab3.cab mycab3.inner.cab simple.infsetreg 1 truemakecert -sk MyKeyName -n "CN=My Publisher Name" MyTestCert.cercert2spc MyTestCert.cer MyTestCert.spcsigncode -j javasign.dll -jp LOWX -spc MyTestCert.spc -k MyKeyName  mycab3.cabstart Simple3.html
Trước khi thực hiện go3. bat, bạn cần phải cắt và dán HTML sau vào một tệp có tên là Simple3. html và đặt nó trong cùng một thư mục với các tệp có tên đơn giản. Java và go3. bat đã tạo trước đó:
<HTML> <OBJECT    CLASSID="clsid:99999999-9999-9999-9999-999999999999" CODEBASE="mycab3.cab#Version=1,1,23,0"> </OBJECT> <APPLET CODE="simple.Simple" WIDTH=100 HEIGHT=100> </APPLET></HTML>
Lưu ý Thay thế GUID phía trên "99999999-9999-9999-9999-999999999999" bằng tệp. inf trong các hướng dẫn sau đây. Hãy làm theo các bước sau để tạo tệp đơn giản. inf được bao gồm trong tệp CAB bên ngoài:
  1. Sao chép bản cái. inf từ <SDK-DIR> \bin\packsigndirectory.
  2. Đổi tên bản sao mới của bản cái. inf thành đơn giản. inf.
  3. Mở tệp đơn giản. inf trong trình soạn thảo văn bản.
  4. Thay đổi các đường sau đây từ:
    run=extrac32.exe /e /a /y /l %49000% CabFileName.cab
    Cho
    run=extrac32.exe /e /a /y /l %49000% mycab3.inner.cab
    Từ
    InfFile=master.inf
    Cho
    InfFile=simple.inf
    Từ
    ClassId="{99999999-9999-9999-9999-999999999999}"
    Cho
    1. Chạy guidgen. exe (từ danh bạ <SDK-DIR> \bin).
    2. Chọn tùy chọn #4 "định dạng đăng ký".
    3. Nhấn nút "GUID mới".
    4. Nhấn nút "sao chép".
    5. Dán GUID mới từ bảng tạm vào dòng bên trên trong tệp đơn giản. inf và vào HTML ở trên là tốt.
    Từ
    PackageName="name"
    Cho
    PackageName="SIMPLE3"
    Từ
    HKLM,"SOFTWARE\Classes\CLSID\%ClassId%\InstalledVersion",,,"aa,bb,cc,dd"
    Cho
    HKLM,"SOFTWARE\Classes\CLSID\%ClassId%\InstalledVersion",,,"1,1,23,0"
    Từ
    HKLM,"Software\Classes\CLSID\%ClassId%\InstalledVersion","Path",,  "%49000%\<filename>"
    Cho
    HKLM,"Software\Classes\CLSID\%ClassId%\InstalledVersion","Path",,  "%49000%\simple\Simple.class"
  5. Lưu các thay đổi bạn đã thực hiện với tệp đơn giản. inffile.
  6. Chạy tệp go3. bat được tạo trước đó.
Ghi chú 1 Sau khi bạn chạy mẫu trước đó, bạn nên tắt kiểm tra gốc trên máy tính cục bộ bằng cách chạy "setreg. exe 1 false". Điều này sẽ ngăn không cho phép kiểm tra được vinh danh là một chứng chỉ thực sự của Internet Explorer. Gốc kiểm tra luôn có thể được kích hoạt lại bằng cách sử dụng "setreg. exe 1 True". Ghi chú 2 Vui lòng xem xét những điều sau đây khi ký vào tệp CAB để sản xuất sử dụng kiểm tra câu thơ:
  1. Tất cả các lệnh trước đây sẽ tạo đăng ký chứng chỉ andimmediately với nó. Hầu hết mọi người tạo lại chứng chỉ của họ mỗi thời gian xây dựng và ký vào một CAB, nhưng bạn không làm điều đó nếu bạn đang phát hành CAB. Bạn mua và sử dụng một chứng chỉ và bạn theo dõi cẩn thận. Các lệnh trước đây tạo chứng chỉ kiểm tra, nhưng bạn chỉ cần thực hiện một số thisif mà bạn chưa mua. Đây là cách bạn đăng nhập nếu chúng có tệp. PVK filethay vì giữ phím trong sổ đăng ký, vì một số người nhận được theirkeys trong biểu mẫu đó. Thay thế "-v MyCertName. PVK" cho "-k KeyName".
  2. Khi bạn chạy lệnh mã đăng ký. exe, bạn nên probablyadd tùy chọn "-t http://timestamp.verisign.com/scripts/timstamp.dll" được đóng dấu thời gian đúng cách vào chữ ký trên tệp CAB. Nó đã được rời khỏi thesesamples để cho phép lệnh thành công cho người dùng không có liên kết đến Internet.
Lưu ý 3 Microsoft Visual J++ 6,0 cung cấp để đóng gói đơn giản cho các cấu phần Java. Xem tab đầu ra trong hộp thoại thuộc tính Project và tài liệu sản phẩm để biết thêm thông tin. Các đơn vị phân phối được tạo bằng Visual J++ 6,0 dùng cài đặt JPM để đóng gói.Chú thích 4 Bạn có thể cấu hình Internet Explorer 4.x hoặc cao hơn để điều trị mã không được ký hiệu có nhiều hơn quyền sandbox theo mặc định. Bạn chỉ nên thực hiện điều này cho các tình huống chuyên biệt như intranet hoặc để kiểm tra các mục đích. Nếu bạn chọn cấu hình Internet Explorer theo cách này, hãy khuyên bạn sẽ không còn có bất kỳ sự bảo vệ nào đối với mã Java độc hại chạy trên máy tính của bạn. Ví dụ, để tự động xử lý tất cả các applet java đầy đủ tin cậy trong vùng intranet, hãy thực hiện các bước sau đây:
  1. Đi đến tab bảo mật trong thuộc tính Internet dialogbox.
  2. Chọn vùng intranet Cục bộ.
  3. Chọn tùy chọn tùy chỉnh, rồi bấm thiết đặt.
  4. Định vị mục quyền Java trong danh sách và chooseCustom.
  5. Chọn tùy chỉnh, rồi bấm thiết đặt tùy chỉnh Java.
  6. Đi đến tab quyền chỉnh sửa.
  7. Bên dưới chạy nội dung bị bỏ chọn, hãy bấm bật.

THAM KHẢO


Để biết thêm thông tin về các vấn đề về bảo mật và đóng gói trong Microsoft Virtual Machine, hãy bấm vào các số bài viết sau đây để xem các bài viết trong cơ sở tri thức Microsoft:
175622 Ngoại lệ SecurityExceptionEx chạy applet java
177168 Tính năng tìm kiếm Java trên máy ảo của Java như thế nào?
179652 Cách triển khai Java trong Internet Explorer 4,0 và Netscape 4,0
181374 Các bài viết về cấu phần liên quan
Để biết thêm thông tin về các sự cố tải về mã, hãy truy cập trang web MSDN sau đây: Đối với các bài viết cơ sở kiến thức mới nhất và thông tin hỗ trợ khác trên Visual J++ và SDK for Java, vui lòng xem các trang sau trên trang web hỗ trợ kỹ thuật của Microsoft: