IE8做的越来越安全,IE8支持站点的activex控件,activex只会被当前特定站点默认加载,从而避免被恶意站点使用。
ATL SiteLock模板和“Per-Site ActiveX”能够混合使用显式和隐式方法,将ActiveX控件绑定到一个或多个域。通过限制ActiveX控件的运行位置和上下文,开发人员和用户可以将改变控件用途的风险降至最低。
ATL SiteLock是一种显式机制,用于限制哪些域和哪些范围可以加载一个给定Activex控件。希望使用这一约束条件的控件开发人员可以将SiteLock模板应用到自己基于ATL的ActiveX控件。这些ActiveX控件没有实现IObjectSafety,而是实现IObjectSafetySiteLockImpl;这个界面是从IObjectSaftey派生而来的,使开发人员能够声明一个许可域(或区域)的列表,以在运行时进行检查。
SiteLock是防止ActiveX重用攻击的最可靠机制,在这种攻击方式中,恶意网站尝试滥用为在另一网站中使用而设计的控件。如果一个网站尝试加载SiteLock不允许的控件,将会防止该对象的实例化。不会出现信息栏或重载。
由于SiteLock机制需要控件开发人员付出一些努力,所以采用这一机制的控件数目有些不尽如人意。为此,微软在IE 8中添加了一个新功能,用于提供SiteLock的一些好处。“Per-Site ActiveX”功能使用户能够决定允许在哪些域中运行一个控件。默认情况下,通过浏览器安装的控件只能在安装该控件的站点上运行。当另一个网站要实例化一个已安装控件时,会向用户显示信息栏,询问是否允许在当前域或所有域中运行控件。
这个域列表可以通过“管理加载项”用户界面或通过“组策略”进行管理
现在sitelock安装包
#include "../Include/sitelock.h"
在前面定义
#define SITELOCK_USE_IOLEOBJECT
#define SITELOCK_NO_EXPIRY
控件类的继承
public IObjectWithSiteImpl,
public IObjectSafetySiteLockImpl,
添加
COM_INTERFACE_ENTRY(IObjectSafetySiteLock)
COM_INTERFACE_ENTRY(IObjectWithSite)
头文件添加
public:
static const SiteList rgslTrustedSites[6];
cpp文件添加
const CVPNAgent::SiteList CVPNAgent::rgslTrustedSites[6] ={
{ SiteList::Allow, L"http", L"*" },
{ SiteList::Allow, L"http", SITELOCK_INTRANET_ZONE },
{ SiteList::Allow, L"https", L"*" },
{ SiteList::Allow, L"https", SITELOCK_INTRANET_ZONE }};
阅读(5883) | 评论(0) | 转发(0) |