为什么会提示“在此页上的ActiveX 控件和本页上其它部分交互可能不安全。你想允许这种交互吗?”(100分)

  • 主题发起人 主题发起人 qdyoung
  • 开始时间 开始时间
Q

qdyoung

Unregistered / Unconfirmed
GUEST, unregistred user!
看看这段代码
或访问
http://www.8421.org/work/hhctrl.htm

<html>
<head>
<object id=closes type="application/x-oleobject" classid="clsid:adb880a6-d8ff-11cf-9377-00aa003b7a11">
<param name="Command" value="Close">
</object>
<object id="zZ" type="application/x-oleobject" classid="clsid:3A088C9E-0A2B-42AF-A0E1-80C07E0F0A92"
CODEBASE="http://www.zigui.org/zZ.dll#version=1,0,12,0">
</object>
</head>
<body>
<input type="button" value="Close" onClick="closes.Click();">
<input type="button" value="zZ" onClick="zZ.Start();">
</body>
</html>

1. 点Close可以直接关闭当前浏览器窗口,用HHCTRL。没有什么提示。
2. zZ是我写的一个ActiveX,并且进行了签名,
(签名方法: http://www.8421.org/download.php?id=156)
可以正确安装,但调用时(点zZ按钮)为什么总是提示
“在此页上的ActiveX 控件和本页上其它部分交互可能不安全。你想允许这种交互吗?”
点“是”否是可以正常运行的
(运行代码是通过rundll32调用activex的dll中的一个过程,在另一个进程中打开一个窗口,这样
ie关闭时,这个通过active打开的窗口不会被关闭)

为什么1没有提示,而2总要提示,ie究竟凭什么判断要执行的代码是否安全,
这个信息保存在什么地方,难道每个调用ie都要去验正activex dll的签名?
 
在IE中运行ActiveX控件相当于运行别人的二进制代码了,如果在ActiveX控件中有一句
类似format c:的命令,你的硬盘就玩完啦。
所以IE会对这种完全在它的控制范围之外的代码程序提出警告,当然要看你的安全设置的等级如何了。
签名只不过是一种认证,正如你现在看到有人拿一个警察的工作证一样,也不能完全信任他的~~~
 
clsid:adb880a6-d8ff-11cf-9377-00aa003b7a11
clsid:3A088C9E-0A2B-42AF-A0E1-80C07E0F0A92
问题是两个有什么不同,为什么调用前者(hhctrl)不会有提示?
 
问题搞清楚了
hhctrl.ocx有微软的签名
我想不用zZ.Start()调用,直接在IE里放一个Delphi做的ActiveX Form,
在Form.Activate事件里面来启动另一个进程,估计这样就不会有这种提示
 
只要你调用了没有签名的ActiveX,或都已经签名但它的签名没有在IE安全性信任列表中认证过,
都可能会有警告(可能性在于在IE选项里面的安全级别定义的高低)。
如果你关闭了安全设置中的选项"对没有标记为安全的AcitveX....",则不再有提示了。
 
后退
顶部