SafeCtl.exe ใช้ IObjectSafety ในตัวควบคุม activex

การแปลบทความ การแปลบทความ
หมายเลขบทความ (Article ID): 164119 - ผลิตภัณฑ์ที่เกี่ยวข้องในบทความนี้
ขยายทั้งหมด | ยุบทั้งหมด

เนื้อหาบนหน้านี้

สรุป

ตัวอย่างของ SafeCtl.exe อธิบายวิธีการปรับเปลี่ยนตัวควบคุม ActiveX ที่ใช้ MFC เพื่อระบุว่า ผู้เผยแพร่รหัส และว่าตัวควบคุมถูกเปลี่ยนแปลง ตัวอย่างสามารถช่วยให้คุณระบุว่าตัวควบคุมไม่ปลอดภัยสำหรับสร้างสคริปต์ และปลอดภัยสำหรับการเริ่มต้น

ข้อมูลเพิ่มเติม

แฟ้มต่อไปนี้สามารถดาวน์โหลดได้จากศูนย์ดาวน์โหลดของ Microsoft::
SafeCtl.exe
หากต้องการทราบข้อมูลเพิ่มเติมเกี่ยวกับการดาวน์โหลดไฟล์การสนับสนุนของไมโครซอฟท์ โปรดคลิกที่หมายเลขบทความต่อไปนี้เพื่อดูบทความใน Microsoft Knowledge Base::
119591วิธีรับแฟ้มการสนับสนุนของไมโครซอฟท์จากบริการออนไลน์
Microsoft สแกนแฟ้มนี้เพื่อหาไวรัส Microsoft ใช้ซอฟต์แวร์ตรวจสอบไวรัสล่าสุด ณ วันที่มีการประกาศแฟ้มนั้นๆ แฟ้มดังกล่าวจะถูกจัดเก็บในเซิร์ฟเวอร์เพิ่มการรักษาความปลอดภัย ซึ่งช่วยป้องกันการเปลี่ยนแปลงแฟ้มโดยไม่ได้รับอนุญาต

ใน Internet Explorer 3.0 และรุ่นที่ใหม่กว่า ผู้ใช้สามารถเพิ่มรหัสในรูปแบบของตัวควบคุม activex ของเว็บเพจที่ แท็ก <object>ถูกใช้เพื่อระบุตัวควบคุม หลังจากที่มีสร้างอินสแตนซ์ของตัวควบคุม แอตทริบิวต์สามารถตั้งค่าผ่านทางอินเทอร์เฟซการมีอยู่ของตัวควบคุม สำหรับแต่ละตัวอย่างเช่น <param> แท็กที่ Internet Explorer พบในบริบทของการเพิ่ม<object>แท็กในขณะที่การแยกวิเคราะห์เพจ HTML, Internet Explorer ส่งผ่านแบบ bag คุณสมบัติผ่านทางการของตัวควบคุมสอดคล้องกัน</object></object>IPersistPropertyBagอินเทอร์เฟซ นอกจากนี้ ลักษณะการทำงานของตัวควบคุมสามารถถูกกำหนดเองโดยใช้ของสคริปต์ที่ฝังอยู่ในหน้าที่ดำเนินการวิธีการ และปรับเปลี่ยนคุณสมบัติเปิดเผยผ่านทางอินเทอร์เฟซสำหรับการดำเนินการอัตโนมัติของตัวควบคุม

รหัส authenticode ที่เซ็นชื่อเทคโนโลยีช่วยให้ผู้ใช้ปลายทาง เพื่อระบุผู้เผยแพร่รหัส และ การตรวจสอบว่า ไม่มีผู้ใดได้เปลี่ยนแปลงที่ มีรหัสเนื่องจากการเซ็นชื่อ ไม่ได้รับประกันว่า รหัสที่มีความปลอดภัยเมื่อคุณสมบัติเริ่มต้น ด้วยค่าที่ไม่น่าเชื่อถือหรือเมื่อที่จำลองการดำเนินการอัตโนมัติซึ่งควบคุมโดย โดยสคริปต์ที่ไม่น่าเชื่อถือ เมื่อต้องการหลีกเลี่ยงความปลอดภัยที่อาจเกิดขึ้นเช่น hazards เริ่มต้น Internet Explorer ค่าความปลอดภัย ซึ่งไม่สามารถเข้าถึงผ่านทางการการรักษาความปลอดภัยแท็บของ Internet Explorerตัวเลือกคุณสมบัติ sheet ต้องลงว่า ตัวควบคุมทะเบียนตัวเองเป็นที่ใช้ประเภทของคอมโพเนนต์ที่เหมาะสม หรือให้ใช้ตัวควบคุมนั้นIObjectSafetyอินเทอร์เฟซ ตัวอย่างแสดงทั้งสองอย่าง

ก่อนที่จะตั้งค่าคุณสมบัติของตัวควบคุมที่ฝังตัวในเพจ HTML, Internet Explorer queries ควบคุมสำหรับIObjectSafety. หากได้รับการสนับสนุน Internet Explorer แล้วเรียกSetInterfaceSafetyOptionsเมธอดบนอินเทอร์เฟซนี้ ที่ส่งผ่านค่า INTERFACESAFE_FOR_UNTRUSTED_DATA ตลอดจนตัวระบุส่วนติดต่อ (IID) ของอินเทอร์เฟซการมีอยู่ ใน HTML เพจวันนี้ ที่คุณสมบัติแตกสามารถเตรียมใช้งานผ่านทางแบบ <param> แท็ก การ IID คือ IID_IPersistPropertyBag IID ที่ให้ไว้สำหรับกรณีที่คุณอาจต้องการจะปกป้องความปลอดภัย บนอินเทอร์เฟซบางส่วน แต่ไม่อื่น และ ในตัวอย่างนี้ไม่จำเป็น ตรวจสอบการใช้งานตัวอย่างเพื่อให้แน่ใจว่า อินเทอร์เฟซที่ได้รับการสนับสนุน ถ้าตัวควบคุมสามารถดำเนินการไม่ทำให้ระบบของไคลเอ็นต์คำนึงถึงข้อมูลที่คุณอาจสามารถเตรียมใช้งานผ่านทางอินเทอร์เฟซที่มีอยู่ และมี สนับสนุนอินเทอร์เฟซที่มีอยู่ การควบคุมการใช้งานของการIObjectSafety::SetInterfaceSafetyOptionsวิธีควรกลับ S_OK มิฉะนั้น E_FAIL ควรจะส่งคืน

ก่อนที่จะอนุญาตให้ใช้สคริปต์ที่ฝังไปในเพจที่ถูกเรียกใช้ Internet Explorer ในทำนองเดียวกันเรียกถึงตัวควบคุมIObjectSafety:: SetInterfaceSafetyOptionsวิธี แต่ค่าส่งผ่านแทน อิน INTERFACESAFE_FOR_UNTRUSTED_CALLER และ IID ของการเขียนสคริปต์บางเทอร์เฟซ ซึ่งโดยปกติจะ IID_IDispatch ตัวควบคุมควรกลับ S_OK หรือ E_FAIL อย่างเหมาะสม

หากไม่สนับสนุนตัวควบคุมIObjectSafety, Internet Explorer ใช้ตัวจัดการประเภทของคอมโพเนนต์เพื่อดูถ้าตัวควบคุมใช้ในประเภท "ที่ปลอดภัยสำหรับการเริ่มต้น" CATID_SafeForInitializing และ "ที่ปลอดภัยสำหรับสร้างสคริปต์" ประเภท CATID_SafeForScripting ตามลำดับ

หากไม่สนับสนุนตัวควบคุมIObjectSafetyand has not registered itself as implementing the appropriate component categories, and if the Internet Explorer safety level is set to High, the default, Internet Explorer will not initialize the control's properties, nor will it execute any scripts that are embedded in the page. In this scenario, end users receive a dialog box that contains the following text:
Potential safety violation avoided
This page contains active content that is not verifiably safe to display. To protect your computer, this content will not be displayed.
The following is a list of guidelines that are taken from Paul Johns' article, "Signing and Marking ActiveX Controls:"
  • The control does not manipulate the file system.
  • The control does not manipulate the registry (except to register and to unregister itself).
  • The control does not overindex arrays or otherwise manipulate memory incorrectly.
  • The control validates (and corrects) all input, including initialization, method parameters, and property set functions.
  • The control does not misuse any data that is provided by the user or that is about that user.
  • The control was tested in a variety of scenarios.
For additional information, visit the following Microsoft Web site:
Signing and Marking ActiveX Controls
http://msdn2.microsoft.com/en-us/library/ms974305.aspx
If a control author has verified that the above criteria have been met in addition to any others that they can think of, they should consider supporting bothIObjectSafetyand registering their control as implementing the appropriate component categories. For a list of the advantages and disadvantages of each of these methods, review the corresponding section in Paul Johns' article, "Signing and Marking ActiveX Controls."

To Compile

Building the sample requires Microsoft Visual C++ 5.0 or Microsoft Visual C++ 6.0. After you extract the files from the archive, load the Safectl.mdp project into Microsoft Developer Studio, and build the project. As part of the build process, the control should register itself.

คำเตือนBefore you modify the sample by using the two preprocessor symbols that are listed later in this section, you have to unregister the control if it has already been built or registered on the computer. To do this, run Regsvr32.exe with the/uswitch for your control. You can also add a custom tool entry in Developer Studio that will do this for the current project. ในการเครื่องมือเมนู คลิกCustomize, and then click theเครื่องมือtab. Create a new entry with the following information:
                Name: &Un-register ActiveX Control
             Command: e:\Program Files\DevStudio\SharedIDE\BIN\REGSVR32.EXE
           Arguments: /u /v "$(TargetPath)"
   Initial Directory: $(TargetDir)
				
At this point, you can use the "tools/Un-register ActiveX Control" entry to unregister your control before you add or remove the sample-specific preprocessor definitions.

To build the control so that it registers itself as implementing the "safe for initializing" and the "safe for scripting" component categories, follow these steps:
  1. ในการProjectเมนู คลิกการตั้งค่า.
  2. คลิกการC++tab, and then define the following preprocessor definition:
    L_USE_COMCAT
  3. คลิกตกลงto close theการตั้งค่าdialog box, and then rebuild the control.
To build the control so that it instead implementsIObjectSafety, follow the previous steps, but replace L_USE_COMCAT with L_IMPL_OBJECTSAFETY.

It is also valid to define both preprocessor symbols. Observe that these symbols are specific to this project. By default, the build settings of the project define both preprocessor symbols.

To Run

After the sample control has been built and has been registered successfully, start Internet Explorer, and then open the Safectl.htm page, which is included with the sample.

If the control has been configured to register itself as safe or implementIObjectSafety, the controls caption should read "Safe for initializing!" When you click the control, you should receive the following message:
I must be safe for scripting!
If Internet Explorer is set to its highest safety setting, the associated script does not run, and you receive the following message:
NOT safe for initializing!


หมายเหตุ:If you are building and testing different configurations of this sample, make sure that you refresh the Web page in the browser. If you do not refresh the page, you may be using the cached version of the control instead of the latest build.

ข้อมูลอ้างอิง

ดูข้อมูลเพิ่มเติมเกี่ยวกับ APIs ความปลอดภัย ความปลอดภัยของการอ้างอิง API ในเอกสารประกอบ ActiveX SDK ออนไลน์

สำหรับข้อมูลเพิ่มเติมเกี่ยวกับรหัสที่มีการเซ็นชื่อ ดู "การรับรองด้วย Microsoft Authenticode เทคโนโลยี" ในเอกสารประกอบ ActiveX SDK แบบออนไลน์

สำหรับข้อมูลเพิ่มเติมเกี่ยวกับประเภทของส่วนประกอบ ดูหัวข้อ "ประเภทของคอมโพเนนต์" ในเอกสารประกอบ ActiveX SDK แบบออนไลน์

สำหรับข้อมูลเพิ่มเติมเกี่ยวกับวิธีการใช้เป็นส่วนประกอบของวัตถุรูปแบบ (COM) อินเทอร์เฟซใน MFC คลิกหมายเลขบทความต่อไปนี้เพื่อดูบทความในฐานความรู้ของ Microsoft:
141277วิธีการแทนอินเทอร์เฟซในโปรแกรมประยุกต์ MFC โดยใช้ c ++ Visual
สำหรับข้อมูลเชิงลึกเกี่ยวกับการพัฒนาตัวควบคุม ActiveX และวิธีการใช้งานบนเว็บ แวะไปที่เว็บไซต์ต่อไปนี้ของ Microsoft:
ABCs ของตัวควบคุม MFC ActiveX
http://msdn.microsoft.com/en-us/library/ms968497.aspx

คุณสมบัติ

หมายเลขบทความ (Article ID): 164119 - รีวิวครั้งสุดท้าย: 22 กันยายน 2554 - Revision: 5.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
Keywords: 
kbdownload kbfile kbinfo kbsample kbmt KB164119 KbMtth
แปลโดยคอมพิวเตอร์
ข้อมูลสำคัญ: บทความนี้แปลโดยซอฟต์แวร์การแปลด้วยคอมพิวเตอร์ของ Microsoft แทนที่จะเป็นนักแปลที่เป็นบุคคล Microsoft มีบทความที่แปลโดยนักแปลและบทความที่แปลด้วยคอมพิวเตอร์ เพื่อให้คุณสามารถเข้าถึงบทความทั้งหมดในฐานความรู้ของเรา ในภาษาของคุณเอง อย่างไรก็ตาม บทความที่แปลด้วยคอมพิวเตอร์นั้นอาจมีข้อบกพร่อง โดยอาจมีข้อผิดพลาดในคำศัพท์ รูปแบบการใช้ภาษาและไวยากรณ์ เช่นเดียวกับกรณีที่ชาวต่างชาติพูดผิดเมื่อพูดภาษาของคุณ Microsoft ไม่มีส่วนรับผิดชอบต่อความคลาดเคลื่อน ความผิดพลาดหรือความเสียหายที่เกิดจากการแปลเนื้อหาผิดพลาด หรือการใช้บทแปลของลูกค้า และ Microsoft มีการปรับปรุงซอฟต์แวร์การแปลด้วยคอมพิวเตอร์อยู่เป็นประจำ
ต่อไปนี้เป็นฉบับภาษาอังกฤษของบทความนี้:164119

ให้ข้อเสนอแนะ

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com