• 编写、发布安全的ActiveX控件


    Posted on 2006-10-23 17:28 yxm 阅读(1456) 评论(0)  编辑 收藏 引用 所属分类: COM/ATL/WTL

    一、指出ActiveX控件对于脚本与数据初始化是安全的

    1.  将下行添加到组件的继承列表的末尾:

    public  IObjectSafetyImpl < CPolyCtl, INTERFACESAFE_FOR_UNTRUSTED_CALLER  |  INTERFACESAFE_FOR_UNTRUSTED_DATA >

    2.  将下行添加到COM 映射:

    COM_INTERFACE_ENTRY(IObjectSafety)

    二、电子签名
    可使用 MAKECERT 和 CERT2SPC 实用工具生成测试 Software Publisher Certificate。请注意,此测试 SPC 对软件发布无效,但可用于测试代码签名

    1.  创建证书文件:

    makecert  /sv  "私钥文件.pvk"  /"CN=公司的名字"  "证书文件名.cer" //注意保留扩展名

    2.  转换cer格式为spc格式:

    cert2spc   dream.cer   dream.spc   

    3.  给cab文件签名

    signtool signwizard

    4.  在web页上嵌套入签名的CAB文件

    <BODY>
    <OBJECT ID="PolyCtl" 
    CLASSID
    ="CLSID:4CBBC676-507F-11D0-B98B-000000000000"
    CODEBASE
    ="http://example.sq-soft.com/mydir/myctl.cab#version=1,0,0,1">
    </OBJECT>

    </BODY>

    CODEBASE 也可以直接指向 OCX 或 DLL 文件:


    三、创建CAB文件(摘录自MSDN)

    1.  创建INF文件

    ; Sample INF file for POLYGON.DLL
    [version] 
    ; version signature (same 
    for both NT and Win95) do not remove
    signature
    ="$CHICAGO$"
    AdvancedINF
    =2.0  

    [Add.Code]
    polygon.dll
    =polygon.dll
    atl.dll
    =atl.dll

    ; needed DLL
    [atl.dll]
    file
    -win32-x86=thiscab
    FileVersion
    =2,00,0,7024
    DestDir
    =11
    RegisterServer
    =yes 

    [polygon.dll]
    file
    -win32-x86=thiscab
    clsid
    ={4CBBC676-507F-11D0-B98B-000000000000} 
    FileVersion
    =1,0,0,1 
    RegisterServer
    =yes  
    ; end of INF file

    其中“thiscab”是一个关键字,表示 CAB 包含此 DLL,也可通过指定一条绝对或相对路径,从一个 HTTP 位置下载所需的 DLL,例如:

    file-win32-x86=http://example.microsoft.com/mydir/NEEDED.DLL 

    关键字“file-win32-x86”将平台标识为 x86 特定的。

    可通过在 Windows 资源管理器中的文件上单击鼠标右键来获取文件的版本号。从显示的列表中选择“属性”,然后在显示的对话框中选择“版本”选项卡。有时需要在文件版本中额外插入一个 0。例如,在对话框中 ATL.DLL 的版本号显示为 2.00.7024。而在 INF 文件中,这变为 2, 00, 0, 7024。

    “DestDir”是将要加载文件的目录所在的位置:11 指定系统目录为 WINDOWS/SYSTEM 或 WINNT/SYSTEM32;10 指定 Windows 目录、WINDOWS 或 WINNT。如果未指定任何 DestDir(典型情况),则代码安装在固定的 OCCACHE 目录中。

    “clsid”是将要安装的控件的 CLSID。

    2.  创建CAB文件

    创建了 INF 文件后,运行 CABARC 实用工具以创建 CAB 文件。应在包含源文件的目录下运行 CABARC。在命令行上,按源文件出现在 INF 中的顺序排列它们,并将 INF 文件放在最后。例如:

    CABARC -6144  n  MYCTL.CAB NEEDED1.DLL NEEDED2.DLL MYCTL.OCX MYCTL.INF

    应在包含源文件(INF、OCX 和 DLL 文件)的目录下运行 CABARC。将在 CAB 文件中存档的文件应该按它们在 INF 文件中列出的同一顺序在命令行中列出。在上面的示例中,INF 文件应该将 NEEDED1.DLL 列在第一位,接下来是 NEEDED2.DLL,然后是 MYCTL.OCX。

    -s 选项在压缩文件中保留用于代码签名的空间。n 命令指定希望创建 CAB 文件。

  • 相关阅读:
    JavaScript Array 对象(length)方法 (contact、push,pop,join,map、reverse、slice、sort)
    echarts+thinkphp 学习写的第一个程序
    jQuery DOM 元素方法(get)
    jQuery 遍历 (each、map)
    jQuery 文档操作方法(append)
    echarts之series,markLine、markPoint
    echarts, 小知识点随意记录,
    ehcarts之toolbox,工具栏
    路径 php中'.'和'..'还有'./'和'../'
    ThinkPHP CodeIgniter URL访问举例
  • 原文地址:https://www.cnblogs.com/czjone/p/1886920.html
Copyright © 2020-2023  润新知