SafeCtl.exe thực hiện IObjectSafety trong điều khiển ActiveX

QUAN TRỌNG: Bài viết này được dịch bằng phần mềm dịch thuật của Microsoft và có thể được Cộng đồng Microsoft chỉnh sửa lại thông qua công nghệ CTF thay vì một biên dịch viên chuyên nghiệp. Microsoft cung cấp các bài viết được cả biên dịch viên và phần mềm dịch thuật thực hiện và cộng đồng chỉnh sửa lại để bạn có thể truy cập vào tất cả các bài viết trong Cơ sở Kiến thức của chúng tôi bằng nhiều ngôn ngữ Tuy nhiên, bài viết do máy dịch hoặc thậm chí cộng đồng chỉnh sửa sau không phải lúc nào cũng hoàn hảo. Các bài viết này có thể chứa các sai sót về từ vựng, cú pháp hoặc ngữ pháp, Microsoft không chịu trách nhiệm về bất kỳ sự thiếu chính xác, sai sót hoặc thiệt hại nào do việc dịch sai nội dung hoặc do hoạt động sử dụng của khách hàng gây ra.

Nhấp chuột vào đây để xem bản tiếng Anh của bài viết này: 164119
Bài viết này đã được lưu trữ. Bài viết được cung cấp "nguyên trạng" và sẽ không còn được cập nhật nữa.
Tóm tắt
SafeCtl.exe mẫu chứng tỏ làm thế nào để sửa đổi một MFC dựa trên điều khiển ActiveX để chỉ những người xuất bản mã và cho dù một kiểm soát đã bị giả mạo với. Mẫu có thể giúp để xác định xem các kiểm soát là an toàn cho kịch bản và an toàn để khởi động.
Thông tin thêm
Các tập tin sau đây có sẵn để tải về từ Microsoft Download Trung tâm:
Để biết thêm thông tin về làm thế nào để tải về Microsoft hỗ trợ tệp, bấm vào đây số bài viết để xem bài viết trong cơ sở kiến thức Microsoft:
119591 Cách tải xuống các tệp hỗ trợ của Microsoft từ dịch vụ trực tuyến
Microsoft đã quét vi-rút cho tệp này. Microsoft sử dụng nhiều nhất phần mềm phát hiện vi rút hiện tại đã có sẵn trên ngày mà các tập tin đã được đăng. Các tập tin được lưu trữ trên tăng cường bảo mật máy chủ có thể giúp ngăn ngừa mọi thay đổi không được phép để các tập tin.

Trong Internet Explorer 3.0 và phiên bản mới nhất, người dùng có thể thêm mã dưới hình thức điều khiển ActiveX vào các trang Web của họ. Các <object> thẻ được sử dụng để xác định một điều khiển. Sau khi một thể hiện của các tạo điều khiển, thuộc tính của nó có thể được thiết lập thông qua việc kiểm soát kiên trì giao diện. Ví dụ, cho mỗi <param> từ khóa mà Internet Explorer cuộc gặp trong bối cảnh của một từ khóa <object> trong khi phân tích một trang HTML, Internet Explorer đi một túi bất động sản thông qua kiểm soát tương ứng<b00></b00></object></object>IPersistPropertyBag giao diện. Hơn nữa, hành vi của một điều khiển có thể tùy chỉnh thông qua việc sử dụng các kịch bản nhúng trong trang đó thực hiện các phương pháp và sửa đổi các thuộc tính tiếp xúc thông qua việc kiểm soát tự động hóa giao diện.

Với mã xác thực mã ký công nghệ cho phép người dùng cuối để xác định những người xuất bản mã và xác minh rằng không có ai đã giả mạo với có mã kể từ khi nó đã được ký kết. Nó không đảm bảo rằng mã là an toàn khi thuộc tính của nó được khởi tạo với giá trị không đáng tin cậy hoặc khi tự động hóa của nó mô hình là lái xe của kịch bản không đáng tin cậy. Để tránh những mối nguy hiểm tiềm năng bảo mật, các mặc định đặt Internet Explorer bảo mật, mà có thể truy cập thông qua các Bảo mật tab của trình duyệt Internet Explorer Tuỳ chọnbất động sản tấm, đòi hỏi rằng kiểm soát một đăng ký chính nó như là việc thực hiện các thích hợp thành phần thể loại hoặc kiểm soát thực hiện các IObjectSafety giao diện. Mẫu minh hoạ cả hai.

Trước khi nó đặt ra các tính chất của một điều khiển nhúng trong trang HTML, truy vấn Internet Explorer kiểm soát cho IObjectSafety. Nếu được hỗ trợ, Internet Explorer sau đó gọi là các SetInterfaceSafetyOptions phương pháp trên giao diện này, đi qua giá trị INTERFACESAFE_FOR_UNTRUSTED_DATA cũng như các định danh giao diện (IID) của một kiên trì giao diện. Trên các trang HTML ngày hôm nay, nơi mà tài sản có xu hướng khởi tạo thông qua các <param> thẻ, IID là IID_IPersistPropertyBag. Các IID được cung cấp cho các tình huống nơi bạn có thể muốn bảo vệ sự an toàn trên một số giao diện nhưng không phải trên những người khác, và trong ví dụ này mà không phải là quan trọng. Thực hiện mẫu kiểm tra để đảm bảo rằng các giao diện được hỗ trợ. Nếu bộ điều khiển có thể làm không có thiệt hại cho hệ thống của khách hàng bất kể của dữ liệu mà nó có thể được khởi tạo thông qua đó giao diện kiên trì và rằng kiên trì giao diện được hỗ trợ, thực hiện sự kiểm soát của các IObjectSafety::SetInterfaceSafetyOptions phương pháp nên trở về S_OK. Nếu không, E_FAIL nên được trả lại.

Trước khi cho phép bất kỳ kịch bản được nhúng trong trang để chạy, Internet Explorer tương tự như các cuộc gọi thông qua việc kiểm soát IObjectSafety:: SetInterfaceSafetyOptions phương pháp nhưng thay vào đó đi giá trị INTERFACESAFE_FOR_UNTRUSTED_CALLER và IID một số giao diện kịch bản, mà thường là IID_IDispatch. Sự kiểm soát nên trở về S_OK hoặc E_FAIL một cách thích hợp.

Nếu bộ điều khiển không hỗ trợ IObjectSafetyInternet Explorer sử dụng hợp phần quản lý thể loại để xem Nếu bộ điều khiển thực hiện các loại "an toàn để khởi động", CATID_SafeForInitializing, và các loại "an toàn cho kịch bản", CATID_SafeForScripting, tương ứng.

Nếu bộ điều khiển không hỗ trợ IObjectSafety và đã không đăng ký chính nó như là việc thực hiện các thích hợp thể loại thành phần, và nếu mức độ an toàn của Internet Explorer được đặt thành cao, mặc định, Internet Explorer sẽ không thể khởi tạo thuộc tính của điều khiển, và cũng không nó sẽ thực hiện bất cứ kịch bản được nhúng trong trang. Trong này kịch bản, người dùng nhận được một hộp thoại có chứa văn bản sau đây:
Tiềm năng vi phạm an toàn tránh
Trang này chứa nội dung hiện hoạt mà không phải là verifiably an toàn để hiển thị. Để bảo vệ của bạn máy tính, nội dung này sẽ không được hiển thị.
Border|phải|200px Đây là danh sách nguyên tắc được lấy từ Paul Johns' bài viết, "đánh ký và dấu Điều khiển ActiveX: "
  • Bộ điều khiển không thao tác hệ thống tập tin.
  • Bộ điều khiển không thao tác registry (ngoại trừ để đăng ký và để unregister chính nó).
  • Bộ điều khiển không overindex mảng hoặc bằng cách khác thao tác bộ nhớ không chính xác.
  • Bộ điều khiển xác nhận (và sửa chữa) tất cả đầu vào, bao gồm cả khởi tạo, tham số phương pháp và bất động sản đặt chức năng.
  • Bộ điều khiển không lạm dụng bất kỳ dữ liệu nào được cung cấp bởi người sử dụng hoặc đó là về người dùng đó.
  • Sự kiểm soát đã được thử nghiệm trong một loạt các kịch bản.
Để biết thêm chi tiết, hãy truy cập trang Web Microsoft sau đây Trang web:
Việc đăng ký vàĐiều khiển ActiveX đánh dấu
http://msdn2.Microsoft.com/en-us/Library/ms974305.aspx
Nếu một tác giả điều khiển đã xác minh rằng các tiêu chí ở trên đã gặp thêm vào bất kỳ người khác mà họ có thể nghĩ đến, họ nên xem xét hỗ trợ cả hai IObjectSafety và đăng ký kiểm soát của họ như là triển khai thực hiện các thích hợp thể loại thành phần. Đối với một danh sách các lợi thế và bất lợi của mỗi những phương pháp này, xem lại các phần tương ứng trong bài viết Paul Johns', "Ký kết và điều khiển ActiveX đánh dấu."

Biên dịch

Xây dựng mẫu yêu cầu Microsoft Visual C++ 5.0 hoặc Microsoft Visual C++ 6.0. Sau khi bạn giải nén các tệp từ lưu trữ, tải các Safectl.mdp dự án vào Microsoft Developer Studio, và xây dựng các dự án. Như một phần của quá trình xây dựng, sự kiểm soát nên đăng ký chính nó.

Cảnh báo Trước khi bạn sửa đổi mẫu bằng cách sử dụng hai preprocessor các biểu tượng được liệt kê sau này trong phần này, bạn phải unregister các kiểm soát nếu có đã được chế tạo hoặc đăng ký trên máy tính. Để làm điều này, chạy regsvr32.exe Regsvr32.exe với các /u chuyển cho kiểm soát của bạn. Bạn cũng có thể thêm một mục nhập công cụ tùy chỉnh trong Phòng thu nhà phát triển sẽ thực hiện việc này cho dự án hiện tại. Trên các Công cụ trình đơn, nhấp vào Tùy chỉnh, và sau đó nhấp vào các Công cụ tab. tạo một mục nhập mới với sau thông tin:
                Name: &Un-register ActiveX Control             Command: e:\Program Files\DevStudio\SharedIDE\BIN\REGSVR32.EXE           Arguments: /u /v "$(TargetPath)"   Initial Directory: $(TargetDir)				
Tại thời điểm này, bạn có thể sử dụng "công cụ/Un-đăng ký ActiveX Kiểm soát"mục nhập để unregister kiểm soát của bạn trước khi bạn thêm hoặc loại bỏ các định nghĩa preprocessor mẫu cụ thể.

Để xây dựng sự kiểm soát nỗi nó đăng ký chính nó như là thực hiện các "an toàn cho khởi tạo" và "an toàn cho"thể loại thành phần, hãy làm theo các bước sau:
  1. Trên các Dự án trình đơn, nhấp vàoThiết đặt.
  2. Bấm vào các C ++ tab, và sau đó xác định các sau preprocessor định nghĩa:
    L_USE_COMCAT
  3. Nhấp vào Ok để đóng nhữngThiết đặt hộp thoại hộp, và sau đó xây dựng lại sự kiểm soát.
Để xây dựng sự kiểm soát để cho nó thay vì thực hiện IObjectSafety, hãy làm theo các bước trước đó, nhưng thay thế L_USE_COMCAT với L_IMPL_OBJECTSAFETY.

Nó cũng là hợp lệ để xác định cả hai preprocessor các biểu tượng. Quan sát rằng các biểu tượng này là cụ thể cho dự án này. Theo mặc định, thiết đặt xây dựng dự án xác định cả hai biểu tượng preprocessor.

Để chạy

Sau khi mẫu kiểm soát đã được xây dựng và đã được đăng ký thành công, khởi động Internet Explorer, và sau đó mở trang Safectl.htm, đó là bao gồm trong mẫu.

Nếu sự kiểm soát đã được cấu hình để đăng ký chính nó là an toàn hoặc thực hiện IObjectSafety, các chú thích điều khiển nên đọc "An toàn cho khởi tạo!" Khi bạn bấm vào điều khiển, bạn sẽ nhận được thông báo sau:
Tôi phải được an toàn cho kịch bản!
Nếu Internet Thám hiểm được thiết lập để thiết lập an toàn cao nhất của nó, các tập lệnh liên kết nào không chạy, và bạn nhận được thông báo sau:
KHÔNG an toàn cho khởi tạo!


Chú ý Nếu bạn đang xây dựng và kiểm tra cấu hình khác nhau của điều này mẫu, hãy chắc chắn rằng bạn làm mới trang Web trong trình duyệt. Nếu bạn không làm mới trang, bạn có thể sử dụng phiên bản cache của kiểm soát thay vì xây dựng mới nhất.
Tham khảo
Để biết thêm chi tiết về an toàn API, xem sự an toàn API tài liệu tham khảo trong tài liệu hướng dẫn trực tuyến ActiveX SDK.

Để biết thêm thông tin về mã ký, xem "với mã xác ký hợp đồng với Microsoft thực Công nghệ"trong tài liệu hướng dẫn trực tuyến ActiveX SDK.

Để biết thêm thông tin về thể loại thành phần, xem chủ đề "Thành phần thể loại" trong ActiveX SDK tài liệu trực tuyến.

Để biết thêm thông tin về làm thế nào để thực hiện một mô hình đối tượng thành phần (COM) giao diện trong MFC, nhấp vào số bài viết sau đây để xem các bài viết trong các Cơ sở kiến thức Microsoft:
141277Làm thế nào để ghi đè lên một giao diện ứng dụng MFC bằng cách sử dụng Visual C++
Đối với thông tin chi tiết về làm thế nào để phát triển một Điều khiển ActiveX và làm thế nào để triển khai trên Web, truy cập vào Microsoft sau Web site:
An toàn an toàn SafeCtl

Cảnh báo: Bài viết này được dịch tự động

Thuộc tính

ID Bài viết: 164119 - Xem lại Lần cuối: 01/12/2015 15:55:25 - Bản sửa đổi: 4.0

Microsoft Internet Explorer 5.0, Microsoft Internet Explorer 6.0, Microsoft Visual C++ 5.0 Enterprise Edition, Microsoft Visual C++ 5.0 Professional Edition

  • kbnosurvey kbarchive kbdownload kbfile kbinfo kbsample kbmt KB164119 KbMtvi
Phản hồi