2010-10-15 44 views
1

通过COM,可以获得对目标系统的绝对控制权。例如:在IE中使用javascript的ActiveXObject对象,可以创建某些对象,这些对象被设计为可以直接访问或与系统属性和文件进行交互。人们会认为常识意味着用户在安装浏览器后立即禁用IE中的ActiveX功能,以确保他们的系统在浏览网络时受到保护,或者至少密切关注他们允许的网站。但是,我怀疑许多普通PC用户都知道如何或为什么要这样做,或者只是厌倦了随时间的微观管理。我认为任何个人电脑用户或管理我的COM类迎合将非常感激不必处理。谢天谢地,它看起来像IE版本打包ActiveX默认现在禁用。VB:获取编译的DLL的调用应用程序信息; COM安全

我已经建立了一个非常多在VB中多功能的COM类库。我不打算从任何网站调用它,但该功能只是COM平台的一部分。我想阻止从IE中调用该库,除非该网站位于白名单域中,以主动保护用户(并最终保护整个Intranet)免受恶意网站的伤害。 VB.Net中的最佳方法是告诉哪个应用程序调用了我的DLL,以便能够判断它是否从任何源自IE的命令或进程中调用?而且,什么域名称为我的DLL?

编辑:我相信这可能是重复的。请参阅:Calling Assembly to get Application Name VB.NET

System.Environment.GetCommandLineArgs()(0)让我调用应用程序路径。有了这些信息,我可以将它与黑/白名单的应用程序进行比较。现在问题已解决。

+0

“我已经构建了一个非常灵活的COM类库” - 这是什么意思? – 2010-10-15 01:35:08

+1

@Mitch小麦:这意味着我的com类无意中让调用应用程序完全控制客户端系统,包括它是从javascript衍生出来的。 – 2010-10-15 01:38:57

+0

@ bob-the-destroyer:这听起来不是个好主意...... – 2010-10-15 02:38:32

回答

2

不要将控件标记为对脚本安全。

默认的安全设置将不允许这样的控件编写脚本。

+0

@Slaks:不确定你的意思,“不要将控件标记为对脚本安全。”我的COM课程并非真正意义上的来自互联网的通话,而只是它可以。这是我需要从VB.Net库本身中找到一种控制方法。 – 2010-10-15 01:46:08

+0

@Slaks:简单地检查了IObjectSafety - 但我实际上并不希望这个COM类可以通过Internet调用,即使用户明确允许它。我会通过管理员可以设置的一些注册表项来设置异常,以绕过我的任意阻止,但对于常规用户,不会。 – 2010-10-15 02:09:22

+0

这意味着你在* IE下的任何脚本都可以访问它之前有*标记你的控件。除非您明确标记,否则您的用户是安全的。目前。 – wqw 2010-10-15 15:44:42

0

自我回答,可能是重复的,我想。请参阅System.Environment.GetCommandLineArgs()(0)Calling Assembly to get Application Name VB.NET

在这种情况下,类从未被标记为安全的脚本,并且意图已经永远不会标记为安全。问题是如何获取调用应用程序信息,以便我可以添加额外的安全措施,以防调用应用程序所具有的不足。