首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

怎的限制控件,使之只能在指定的网站使用

2013-12-04 
怎样限制控件,使之只能在指定的网站使用??当我们为网站开发ActiveX控件的时候,也许会出于希望控件功能由指

怎样限制控件,使之只能在指定的网站使用

?

?

当我们为网站开发ActiveX控件的时候,也许会出于希望控件功能由指定网站独享的目的,希望限制使用此控件的域。

?

?

实现原理

1. 在控件内获取IE浏览器接口IWebBrowser2

2. 通过此接口的get_LocationURL方法获取控件所在网页的URL。

3. 检查这个URL的域是否在白名单中。如果不是信任的域,任何方法都不允许调用。

?

使用方法:

1. 工程中include sitelock.h(下载地址:http://www.microsoft.com/downloads/thankyou.aspx?familyId=43cd7e1e-5719-45c0-88d9-ec9ea7fefbcb&displayLang=en)

2. 为控件类继承SiteLock模板 IObjectSafetySiteLockImpl。

public IObjectSafetySiteLockImpl<CActiveXDemo, INTERFACESAFE_FOR_UNTRUSTED_CALLER |INTERFACESAFE_FOR_UNTRUSTED_DATA>

3. 定义域名白名单,支持通配符*。

??? BEGIN_SITELOCK_MAP()
??????? SITELOCK_ALLOWHTTP(L"*.mydomain1.com")
??????? SITELOCK_ALLOWHTTPS(L"*.mydomain1.com")
?? ?END_SITELOCK_MAP()

4. 在程序中需要控件的方法前加入域的检查

//限制控件被信任者调用相关的宏
#define ENABLE_CALLER_VALIDATE_CHECK

#ifdef ENABLE_CALLER_VALIDATE_CHECK
?? ?#define DO_CALLER_VALIDATE_CHECK() if (!InApprovedDomain()){return E_FAIL;}
#else
?? ?#define DO_CALLER_VALIDATE_CHECK()
#endif

?

这样,我们控件提供的服务就只有我们允许的网站可以使用。

热点排行