程序员要从0下表开始,这篇是介绍这个系列的背景的,没有兴趣的人可以直接跳过。


为什么要开发ActiveX控件

由于工作需要,我们开发了一个网站,使用了一款身份证识别仪的网页ActiveX(OCX)插件。但是我发现现在市面上各种识别仪的ActiveX插件都有一个共同的问题,都是可以被仿冒伪造,好多厂家为了适应性,采用了同一个ClassID,实现同样的接口来读取信息。

我们的网站是要给到下线使用的,他们有些就会安装一些身份证读取软件,来通过实现一个同样接口同样ClassID的ActiveX,达到身份证读取欺诈的目的。例如clsid:10946843-7507-44FE-ACE8-2B3483D179B7

<form id="form1" runat="server">    <OBJECT classid="clsid:10946843-7507-44FE-ACE8-2B3483D179B7"id="CVR_IDCard" name="CVR_IDCard" width="0" height="0" >
</OBJECT><script language="javascript" type ="text/javascript">function Button1_onclick() {var CVR_IDCard = document.getElementById("CVR_IDCard");                    var strReadResult = CVR_IDCard.ReadCard();if(strReadResult == "0"){
ClearForm();document.all['Name'].value = CVR_IDCard.Name;  document.all['Sex'].value = CVR_IDCard.Sex;    document.all['Nation'].value = CVR_IDCard.Nation;

既然欺诈的ActiveX这么猖獗,而身份证识别仪必须采用ActiveX控件的方式读取外设,所以我们需要开发自己的安全的ActiveX控件。

PS:一开始我们也觉得从技术上是无法完全防范的,从业务规范上的防范会更有效,甚至说安装个摄像头防止下面乱来都会有效。不过既然这里是技术博客,我们还是从技术层面做点探讨


为什么要从ActiveX调用另一个ActiveX

既然身份证厂家提供了ActiveX(也就是OCX形式的控件),有的甚至会卖大包提供SDK包,也就是下面DLL的调用说明

华视电子识别仪驱动目录↓

南京艺数识别仪驱动目录↓

如果我的ActiveX调用他们的DLL,当然技术上是简单,但是因为识别仪厂家的驱动是不同的,而且DLL的接口也不尽相同,有的甚至不会提供接口文档,就会造成通用性很差。

如果我的ActiveX调用他们的ActiveX,因为大家提供给网页端都有同样的接口,所以通过ActiveX调用ActiveX会更加简单和通用。为了增加安全性,我们的ActiveX不会通过网页进行中转,而是在内存中直接调用识别仪厂家的ActiveX。

var CVR_IDCard = document.getElementById("CVR_IDCard");
var strReadResult = CVR_IDCard.ReadCard();
if(strReadResult == "0")
{document.all['Name'].value = CVR_IDCard.Name;
document.all['Sex'].value = CVR_IDCard.Sex;
document.all['Nation'].value = CVR_IDCard.Nation;


识别仪厂家的ActiveX控件有什么问题?

问题多了去了!!!我简单分析了BS加载识别仪数据的过程,有多个漏洞点可以想办法绕过。

1:可以通过通信截取的,例如用Fiddler等工具拦截通信,修改读取的信息

2:直接在浏览器通信前用js脚本修改数据

3:修改注册表,将ActiveX控件的指向自己写的一个伪造控件,服务器就分不清是真控件读取的还是伪造控件读取的

4:大部分识别仪厂家的ActiveX控件都是基于公安部发布的几个动态链接库,如termb.dll、sdtapi.dll等,这些dll的接口都是无校验的。写一个伪造的termb.dll替换官方的dll,就可以范围伪造的信息。

5:从dll读取usb端口应该还有文章可做,只是过于底层没有深入研究

还没算系统钩子、反编译破解等高级方法,当然我也不是安全方面的专家,至少将1、2、3等门槛较低的问题修复也就差不多了,为了达到这个目的,我们的做法是开发一个ActiveX来调用识别仪厂家的ActiveX控件,并作安全处理(至于中间的安全做法和防护方法,不在本系列讨论内容)。

转载于:https://www.cnblogs.com/anic/p/5014462.html

开发ActiveX控件调用另一个ActiveX系列0——身份证识别仪驱动的问题相关推荐

  1. 关于vlc播放器的ActiveX控件调用问题

    下了好几个版本的vlc播放器,却发现vlc播放器自带的ActiveX插件除了初始化能用之外,后面的js接口完全用不了 从1.0.5版本之后的ActiveX无法调用第一版的js接口 从2.0.5版本之后 ...

  2. 编写ATL工程实现ActiveX控件调用cryptoAPI接口(三)------------AES对称加密与解密

    注:下面的代码中用了Map,Base64,log,Result等都为自定义类型,太长就不一一贴出. [cpp]  view plain  copy  print ? /* * * * 文件名称:Enc ...

  3. 编写ATL工程实现ActiveX控件调用cryptoAPI接口(一)------------签名与验证

    注:下面的代码中用了Map,Base64,log,Result等都为自定义类型,太长就不一一贴出. [cpp]  view plain  copy  print ? /* * * * 文件名称:Sig ...

  4. 编写ATL工程实现ActiveX控件调用cryptoAPI接口(二)------------信封加密与解密

    注:下面的代码中用了Map,Base64,log,Result等都为自定义类型,太长就不一一贴出. [cpp]  view plain  copy  print ? /* * * * 文件名称:Env ...

  5. VC6开发视频监控ActiveX控件总结

    总结前段时间在VC6下使用MFC开发视频监控控件过程中遇到的一些问题. 1.获取控件当前所在路径,用于读取该目录下的INI配置文件 获取配置文件路径 2.获取当前运行控件的电脑上的固定盘符列表,用于本 ...

  6. [转]使用C#开发ActiveX控件

    前言 ActiveX控件以前也叫做OLE控件,它是微软IE支持的一种软件组件或对象,可以将其插入到Web页面中,实现在浏览器端执行动态程序功能,以增强浏览器端的动态处理能力.通常ActiveX控件都是 ...

  7. [转]ASP中ActiveX控件的内嵌及调用

    懂ASP(Active Server Pages)的人很多,但能用ASP自如地调用ActiveX控件的人却不多:如果不调用ActiveX控件,则可以说微软当初设计ASP的初衷根本没有达到.众所周知,A ...

  8. 使用C#开发ActiveX控件(新)

    前言 ActiveX控件以前也叫做OLE控件,它是微软IE支持的一种软件组件或对象,可以将其插入到Web页面中,实现在浏览器端执行动态程序功能,以增强浏览器端的动态处理能力.通常ActiveX控件都是 ...

  9. C# ActiveX控件开发_1494

    要使用C#真隐一个ActiveX控件,须要解决三个答题: 1.使.NET组件可以被COM调用 2.在客户机上注册后,ActiveX控件能通功IE的平安认证 3.已在客户机上注册时,安装包能通过IE的签 ...

最新文章

  1. 使用BH1750测量激光发射器的强度
  2. 兼容PC和手机触摸代码
  3. VTK:Filtering之TriangulateTerrainMap
  4. 测试计划(GB8567——88)
  5. 怎么知道自己是否适合计算机专业,事实:我怎么知道我的旧计算机是否适合win7或win10?...
  6. IE、Chrome、Firefox下的按钮文字居中
  7. mysql vc运行库_VC++运行库安装
  8. 整数进制转换技巧以及相关算法题讲解(简洁易懂)
  9. java nio 坑_把Java的nio坑逐个踩一遍
  10. MATLAB中神经网络工具箱的使用
  11. CDD数据库文件制作(一)
  12. 自动化本科生考计算机研究生,请教关于自动化专业本科生报考研究生的问题?...
  13. 解决微信公众平台IP白名单
  14. 机器翻译古文也翻车?读了20次“苟富贵勿相忘”后,谷歌:没钱的人总会被遗忘...
  15. 如何获取网络协议的协议号
  16. linux 下vim中关于删除某段,某行,或全部删除的命令
  17. 驻场开发跟人力外包有什么区别?
  18. 课程设计——网上商店前台功能的设计与实现
  19. [容斥 状压DP 树形DP] BZOJ 4455 [Zjoi2016]小星星 UOJ #185 【ZJOI2016】小星星
  20. Java设计模式吐血整理

热门文章

  1. ssm+jsp计算机毕业设计固定资产管理系统f1e21(程序+lw+源码+远程部署).
  2. android桌面小火箭升空动画
  3. “声音”背后的原理(3):音频信号处理的基础概念和流程小结
  4. 产品经理培训出来好就业吗
  5. 每日站立会议怎么开?
  6. Java求两个数的最大公约数及最小公倍数、求多个数的最大公约数及最小公倍数
  7. 选股方法之:量比和换手率(转载)
  8. oracle文件系统挂载点,Oracle 集群文件系统 (OCFS)
  9. 「hdu6681」Rikka with Cake【线段树】
  10. emplace_back和push_back对比分析