[发明专利]一种Windows系统下的安全输入方法有效
申请号: | 200810112888.2 | 申请日: | 2008-05-26 |
公开(公告)号: | CN101315657A | 公开(公告)日: | 2008-12-03 |
发明(设计)人: | 陆舟;于华章 | 申请(专利权)人: | 北京飞天诚信科技有限公司 |
主分类号: | G06F21/22 | 分类号: | G06F21/22;G06F9/44;G06F9/46 |
代理公司: | 北京众合诚成知识产权代理有限公司 | 代理人: | 朱印康 |
地址: | 100083北京*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 windows 系统 安全 输入 方法 | ||
技术领域
本发明属于信息安全领域,特别涉及一种Windows系统下的安全输入的方法。
背景技术
模式对话框是Windows系统定义的一种特殊的“窗口类”,通俗的讲就是,如果模式对话框不结束,即模式对话框弹出时便会中止主程序的执行,直到该模式对话框返回才能继续执行主程序,具体就是DoModal函数(VC中DoModal函数的作用是用来显示模式对话框的,即用它来弹出一个模式对话框)不返回的话,DoModal函数的下一句程序就无法运行,一般需要输入参数时要用这种方法。
随着网络的发展,身份认证、网上银行、VPN等诸多涉及领域都需要调用模式对话框,由用户或智能密钥装置等途径向该模式对话框中输入一些重要的或敏感的参数来实现,比如密码、财务数据、口令等等。但是,由于客户端一般都是用户个人计算机,安全级别一般很低,非常容易被木马、钩子病毒等攻击,所以如果客户端计算机被木马钩子病毒(包括键盘钩子病毒)等远程控制,便很容易在弹出的模式对话框中尤其是标准模式对话框中,通过枚举窗口钩取由用户或智能密钥装置等途径在该对话框中输入的重要/敏感信息,给合法用户的正常交易带来极大的安全隐患。
如果希望全面最大可能地自定义控件,包括自定义控件界面以及控件行为等,则需要创建一个自绘控件。自绘控件顾名思义,需要自定义控件的图形化表示形式,也就是自定义控件界面。创建自绘控件的好处在于能够完全地控制界面的每一部分。使用自绘控件实现的自绘模式对话框相对标准模式对话框而言,最大的优点是可以防止多种类型的钩子程序通过枚举窗口将输入的重要/敏感信息钩取。
桌面是一组图形界面、目录窗口、菜单和钩子的集合,只有处于激活状态的桌面才能够显示,并且与用户进行交互。在Windows操作系统中,可以另外启动一个桌面,在新启动的桌面中可以有效的屏蔽掉大部分黑客或木马钩子病毒的远程攻击,但是在新启动的桌面中需要利用一个新的线程才能调用模式对话框,因为MFC窗口类是不能实现跨线程调用DoModal函数的,这样虽然屏蔽了大部分的黑客或木马钩子病毒的远程攻击,但是却存在在新启动桌面的模式对话框中输入的信息被保存在该桌面的数据结构中,不能在原桌面中使用的问题;而DialogBox函数虽然可以跨线程调用,但是由于DialogBox函数只能定义自己的消息映射,不能定义类的实例,即不能使用类的成员变量和消息映射,也就是说只能使用标准模式对话框,而不能使用非标准(非缺省)的MFC控件,尤其是自绘控件。
发明内容
为了解决上述在同一桌面中模式对话框中输入的内容易被黑客或木马钩子病毒钩获,且在不同桌面中不能实现跨线程显示模式对话框及跨线程使用模式对话框自绘控件的问题,本发明提供了一种安全输入的方法,通过全局变量共享的方式来实现跨线程显示模式对话框,尤其是实现对自绘控件等非标准(非缺省)的MFC控件的使用,进一步提高输入的安全性。
一种安全输入方法,包括如下步骤:
1、第一桌面当前运行的线程或进程中声明与模式对话框的输入相对应的一个或多个数据变量为全局变量,定义模式对话框的消息映射函数及与模式对话框的控件对应的类,声明所述类的实例为全局变量,定义所述类的初始化方法和自定义消息映射,并在模式对话框的自绘控件对应的类中定义绘制函数;
2、第一桌面当前运行的线程或进程创建第二线程,所述第二线程创建第二桌面,设置自身工作在第二桌面中,将程序运行环境从第一桌面切换到第二桌面;
3、第二线程利用DialogBox函数显示模式对话框,所述消息映射函数利用所述被声明为全局变量的数据变量和被声明为全局变量的实例调用所述初始化方法对所述模式对话框的控件进行初始化,并调用所述绘制函数实现自绘控件的绘制;
4、第二线程等待接收用户在所述构造的模式对话框中输入的数据,更新所述被声明为全局变量的数据变量为接收到的数据;
5、第二线程关闭第二桌面,将当前运行环境切换回第一桌面,结束自身运行,第一桌面当前运行的线程或进程获取所述更新后的被声明为全局变量的数据变量。
步骤1中定义所述类的初始化方法包括:
1)将类与控件窗口关联起来;
2)用所述自定义消息映射代替控件的缺省消息映射。
优选的,利用SetProp函数和GetProp函数将类与控件窗口关联起来。
优选的,利用SetWindowLong函数用所述自定义消息映射代替控件的缺省消息映射。
更新被声明为全局变量的数据变量为接收到的数据的方法具体为将接收到的数据存储在被声明为全局变量的数据变量中。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京飞天诚信科技有限公司,未经北京飞天诚信科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/200810112888.2/2.html,转载请声明来源钻瓜专利网。