ActiveX لا تعمل بشكل صحيح مع إعدادات الأمان الافتراضية

StackOverflow https://stackoverflow.com/questions/1644828

سؤال

وكنت قد كتبت عنصر تحكم ActiveX في C # و جعلت من العمل باستخدام قيادة regasm، وأنه يعمل بشكل جيد طالما تم تعيين مستوى الأمان إلى الأقل .. ثم كخطوة تالية لقد جعلت من المثبت. CAB (ICD - الإنترنت مكون تحميل)، ووقع ملفي. CAB و ActiveX ملف .dll مع شهادة اختبار. عندما ضرب صفحة HTML من متصفحي وقطع التثبيت يعمل بشكل جيد مع إعدادات الأمان الافتراضية من IE، ولكن في النهاية يبدو أنه تم تثبيت شيء ويظهر صليب أحمر على مكان اكتف. وعلاوة على ذلك لقد بحثت تحميل المجلد Program Files تحت الدليل Windows، في عمود الحالة إنها تظهر كلمة "غير معروف". في حين أنه هو "تثبيت" لجميع اكتف الآخرين. ماهي المشكلة المحتملة. وعلاوة على ذلك إذا كنت تستخدم الأمر regasm لتسجيل التجميع أنه يعمل بشكل جيد، وأنا وقعت على اكتف ولكن لا يزال لدي لنقل شريط الأمن إلى الأقل في وضع متصفحي؟ لماذا كان الأمر كذلك؟ ثم ما هو الغرض من توقيع؟ ولقد استخدمت RegisterServer=yes في ملفي .inf الخاص

واسمحوا لي أن أعرف، إذا كان قد ذهب بعض واحد من خلال هذه مشكلة بالفعل؟

هل كانت مفيدة؟

المحلول

ومن أجل تشغيلها في IE، تحتاج أيضا إلى تنفيذ IObjectSafety بحيث IE يعرف أنه آمن ليتم استدعاؤها من قبل المتصل غير موثوق بها و / أو مع بيانات غير موثوق بها. (إذا كان ذلك آمنا في الواقع، وهذا هو)

وشخصيا، لقد فعلت هذا فقط في C ++ و ATL، وليس C #، ولكن هنا هي وظيفة بلوق التي تبدو مثل ذلك من شأنه أن يساعد على تحقيق هذا في C #.

http://blog.devstone.com/aaron/2007 /06/12/ImplementingIObjectSafetyInNETMarkingClassesSafeForScripting.aspx

والسبب في ذلك هو أن البرامج النصية من قبل الأفراد الشائنة قد تستخدم وجوه الخاص بك لتجاوز أمن الطبيعي التي تقدمها IE، لذلك كائن ActiveX الخاص بك يجب أن تدافع عن نفسها ضد صفحات غير موثوق بها.

عند تسجيل الدخول سيارة أجرة، كنت تقول للمستخدم أن سيارة الأجرة التي يقومون بتنزيلها هي واحدة يعتقدون أنهم تحميل - أي أن بعض الأفراد الخبيثة لم يستبدل سيارة أجرة الخاص بك مع واحد خطير. إذا كانت نثق بكم كناشر، ثم أنها يمكن أن نثق أن ActiveXObject لن تفعل أي شيء الشر من تلقاء نفسها، أو في تركيبة مع رمز الأخرى التي يثقون به.

عند تنفيذ IObjectSafety، للعودة INTERFACESAFE_FOR_UNTRUSTED_CALLER | INTERFACESAFE_FOR_UNTRUSTED_DATA، فأنت تقول IE أن الكائن لا يمكن أن تستخدم بشكل ضار من قبل أي شخص آخر، وبالتالي فهو آمن لتشغيل جنبا إلى جنب مع رمز من أن المستخدم لا يثق بشكل واضح.

نصائح أخرى

وبالنسبة لي الحل أعلاه لا يعمل. كنت بحاجة لتسجيل أيضا يقول:

ومع: regasm MyDll.DLL / يقول:

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top