一种增强界面安全性的方法
技术领域
本发明涉及信息安全领域,特别涉及一种增强界面安全性的方法。
背景技术
为了更好的实现用户与计算机等系统的交互,出现了充当用户与系统之间进行互动和资讯交换媒介的用户界面,该用户界面是一种介于用户与系统硬件之间设计彼此之间互动沟通的相关软件,实现了系统信息的内部形式与用户可以接受的形式之间的转换目的,使得用户能够方便有效率地去操作硬件以达成双向的互动,完成用户所希望借助硬件完成的工作。其中,用户界面定义广泛,凡参与人类与机械的信息交流的领域都存在着用户界面,应用较广的有人机交互、图形用户界面。
其中,图形用户界面是指计算机系统中实现用户与计算机之间信息交换的软件、硬件部分,软件部分包括用户与计算机信息交换的约定、操作命令等处理软件,硬件部分包括输入装置和输出装置。目前常用的是图形用户界面采用多窗口系统,显示直接形象,操作简便。该图形用户界面又称人机界面,简称界面。
发明人在实现本发明的过程中,发现由于计算机系统是一个相对开放的环境,因此一旦用户的计算机被植入了非法程序如木马病毒等,则计算机的界面就会被窃取,并且在实际应用中,计算机有时需要使用第三方的界面来与用户进行交互,由于上述等原因,一旦非法用户窃取到用户通过界面所输入的信息,就会导致用户的重要信息的被非法窃取,给用户造成使用上的不便,甚至给用户的经济造成巨大损失(如网上银行卡号密码被窃取等)。
发明内容
为了增强界面安全性,确保用户通过界面输入信息的使用过程的安全可靠,本发明实施例提供了一种增强界面安全性的方法。所述技术方案如下:
一方面,提供了一种增强界面安全性的方法,所述方法包括:
定位目标窗口;
第三方进程创建带有输入控件的强化窗口,具体包括:
获得要覆盖的所述目标窗口的区域,根据所述获得的目标窗口的区域,计算覆盖所述目标窗口的输入控件所需的窗口大小,所述强化窗口将自身的左上角坐标设为(0,0),并将所述强化窗口大小设置为所述计算得到的所需的窗口大小,获得所述目标窗口的输入控件的窗口指针;
获得所述目标窗口的输入控件的坐标;
根据所述获得的目标窗口的输入控件的坐标,将所述强化窗口的输入控件与所述目标窗口的输入控件进行重合;
对所述目标窗口进行截图,并将得到的图像设置为所述强化窗口的背景;
其中,所述输入控件支持虚拟桌面功能,窗口界面显示与新建的桌面,并屏蔽其他进程的输入或输出;
接收用户输入的信息;
判断用户触发的按键类型,若用户触发的按键是确定按键时,则所述强化窗口将所述用户输入的信息发送给创建所述目标窗口的进程,并令所述目标窗口关闭后关闭所述强化窗口自身;当用户触发的按键是取消按键时,则所述强化窗口直接令所述目标窗口关闭后关闭所述强化窗口自身;
其中,所述获得所述目标窗口的输入控件的窗口指针具体为获得所述目标窗口输入控件的窗口指针所需的输入控件标识ID,所述输入控件标识ID是由所述目标窗口调用并显示所述强化窗口时指定的。
所述根据所述获得的目标窗口的输入控件的坐标,将所述强化窗口的输入控件与所述目标窗口的输入控件进行重合的步骤,包括:
将所述强化窗口的输入控件的坐标设置为与所述目标窗口的输入控件的坐标相同;
获得所述目标窗口的输入控件的大小,将所述强化窗口的输入控件的大小设置为与所述目标窗口的输入控件的大小相同;
获得所述目标窗口的输入控件的标题参数,将所述强化窗口的输入控件的标题设置为与所述目标窗口的输入控件的标题相同。
所述覆盖所述目标窗口的输入控件所需的窗口大小具体为:
所述覆盖所述目标窗口的输入控件所需的窗口的宽度与所述目标窗口的区域的宽度一致;
所述覆盖所述目标窗口的输入控件所需的窗口的高度与所述目标窗口的输入控件右下角的垂直坐标一致。
所述获得所述目标窗口的输入控件的窗口指针的步骤,包括:
获得所述目标窗口的输入控件的标识,根据所述标识获得所述目标窗口的输入控件的窗口指针,其中,所述标识是由所述目标窗口调用并显示强化窗口时指定。
所述将所述强化窗口的输入控件与所述目标窗口的输入控件进行重合的步骤,包括:
根据所述目标窗口的输入控件的坐标,将所述强化窗口的输入控件的坐标设置为与所述目标窗口的输入控件的坐标相同。
所述强化窗口中至少包括一个输入控件,其中,所述输入控件的个数与所述目标窗口的输入控件的个数相同。
本发明实施例提供的技术方案的有益效果是:
通过提供的强化窗口对目标窗口进行重合覆盖,使得用户输入的信息能够发送给创建强化窗口的进程进行处理,从而有效确保用户通过界面输入信息的使用过程的安全可靠,增强了界面安全性。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例提供的一种增强界面安全性的方法流程图;
图2是本发明实施例1提供的一种增强界面安全性的方法流程图;
图3是本发明实施例2提供的一种增强界面安全性的方法流程图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。
为了增强界面安全性,确保用户通过界面输入信息的使用过程的安全可靠,本发明实施例提供了一种增强界面安全性的方法,参见图1,该方法内容包括:
S1:获得目标窗口的输入控件的坐标;
S2:根据所述获得的目标窗口的输入控件的坐标,将强化窗口的输入控件与所述目标窗口的输入控件进行重合;
S3:对所述目标窗口进行截图,并将得到的图像设置为所述强化窗口的背景;
S4:接收用户输入的信息。
为了对本发明实施例提供的方法进行详细说明,请参见如下各实施例:
实施例1
为了增强界面安全性,确保用户通过界面输入信息的使用过程的安全可靠,本发明实施例提供了一种增强界面安全性的方法,参见图2,该方法内容如下:
步骤101:创建强化窗口;
在本实施例中需要创建强化窗口,其中强化窗口带有如下控件:确定按键、取消按键和输入控件,并且输入控件的数量与要强化的目标窗口所包含的输入控件相同。本实施例为了便于说明,假设预先获知了待进行强化的目标窗口内所包含的输入控件的数量。
同时为了提高安全性,强化窗口具备安全输入功能,例如,输入控件支持软键盘输入,防止键盘钩子;或者,输入控件是基于非输入控件开发的安全输入控件,防止窗口监视;或者,支持虚拟桌面功能,窗口界面显示于新建的桌面,屏蔽其他进程的输入输出,使得可能存在的木马等攻击进程失效。
步骤102:定位目标窗口
在本实施例中,强化窗口是由第三方进程而不是实际进行人机交互的进程创建的,因此需要定位将要覆盖的目标窗口。优选地,在本实施例中,通过预先约定的窗口标题来定位目标窗口,具体方法是:
步骤102-1:通过调用WINDOWS API EnumWindows()函数枚举当前显示的所有窗口;
步骤102-2:判断枚举得到的窗口是否为目标窗口,如果是,则执行步骤103,否则,继续执行步骤102-1,直到判断得到目标窗口或直到将枚举得到的所有窗口已判断完;
其中,在本实施例步骤102中,在判断枚举得到的窗口是否为目标窗口时,可以采用通过使用窗口标题来判断枚举得到的窗口是否为目标窗口的方式,具体内容如下:预先定义好目标窗口的标题,判断枚举得到的窗口的标题是否为事先约定的标题,如果是,则枚举得到的窗口为目标窗口,否则枚举得到的窗口不是目标窗口。本领域技术人员可以获知,还可以通过其他通用窗口属性来判断枚举得到的窗口是否为目标窗口,如窗口大小、窗口图标和窗口光标等。
步骤103:通过WINDOWS窗口类方法GetSafeHWnd获得目标窗口的句柄;
在本实施例中,在确定目标窗口的句柄之后,声明强化窗口对应的类实例,将目标窗口的句柄关联到类实例,即将强化窗口与目标窗口相关联,由于之前已经创建了强化窗口,则通过WINDOWS对话框类方法DoModal显示强化窗口。
在此过程中,windows系统会调用WINDOWS对话框类方法OninitDialog,并且通过此方法来进行后续步骤。
步骤104:通过WINDOWS窗口类方法GetWindowRect获得目标窗口的坐标;
步骤105:利用WINDOWS窗口类方法MoveWindow或SetWindowPos将强化窗口移到目标窗口处,并将强化窗口的大小设置为与目标窗口的大小相同,从而与目标窗口重合并将其覆盖;
其中,windows窗口的坐标以左上角为起点,根据步骤104获取的目标窗口的坐标,将强化窗口左上角的坐标设为与目标窗口的左上角坐标相同,即可完成重合;
在本实施例中,还可以预先设置强化窗口的标题栏、最大化/最小化按钮、窗口标题等各个参数与目标窗口对应的各个参数相同;
或者,
如果未预先进行上述设置,则在执行步骤104和步骤105的同时,还执行如下操作:利用WINDOWS窗口类方法GetWindowlnfo获得目标窗口当前的各项参数,如标题栏、最大化/最小化按钮、窗口标题等;利用WINDOWS窗口类方法ModifyStyle以及SetWindowText将强化窗口的参数设置为与目标窗口的参数相同。
步骤106:通过调用WINDOWS API EnumChildWindows()来枚举目标窗口中的所有子窗口;
步骤107:利用WINDOWS API GetWindowLong获取目标窗口的输入控件的窗口属性;
优选地,在本实施例中,目标窗口中只含有一个输入控件;本领域技术人员可以获知,目标窗口中还可以含有多个输入控件,则相应地,事先约定各个输入控件的标识ID,或者为各个输入控件设置预先约定的不同的属性。
步骤108:根据输入控件的窗口属性获取输入控件的窗口句柄;
步骤109:利用GetWindowRect和WINDOWS窗口类方法ScreenToClient获得目标窗口的输入控件的坐标;
其中,在本实施例中,由于强化窗口与目标窗口重合,因此步骤109中获得的目标窗口的输入控件的坐标也即为强化窗口的输入控件的坐标。
步骤110:将强化窗口的输入控件与目标窗口的输入控件重合;
其中,在本实施例步骤110中,将强化窗口的输入控件与目标窗口的输入控件重合的方法与步骤105中将强化窗口与目标窗口重合的方法相同;
即,将所述强化窗口的输入控件的坐标设置为与所述目标窗口的输入控件的坐标相同;
获得所述目标窗口的输入控件的大小,将所述强化窗口的输入控件的大小设置为与所述目标窗口的输入控件的大小相同;
获得所述目标窗口的输入控件的标题参数,将所述强化窗口的输入控件的标题设置为与所述目标窗口的输入控件的标题相同。。
步骤111:利用WINDOWS对话框类方法GetDlglTem根据目标窗口中“确定”和“取消”这两个按键的控件标识ID,获得“确定”和“取消”两个按键对应的窗口句柄;
在本实施例中,对于一般的窗口来说,“确定”和“取消”这两个按键的控件标识ID通常是确定的,分别为IDOK和IDCANCEL,因此可以直接使用这两个预定义的控件ID获得相应的窗口句柄;
进一步地,如果“确定”和“取消”这两个按键的控件ID发生变化时,则需要事先约定这两个按键的控件标识ID,并根据其获得相应的窗口句柄。
步骤112:根据获得的窗口句柄,获得“确定”和“取消”这两个按键的坐标,从而将强化窗口的相应按键与目标窗口的按键重合;
进一步地,在本实施例中,还可以包括:利用WINDOWS窗口类方法EnableWindow将强化窗口的“确定”按键设置为不可用状态,直到用户在输入控件里的输入符合预设条件(如用户在输入控件里输入的字符或数字的数量达到一定程度)时再置为可用。
步骤113:利用WINDOWS API CreateCompatibleBitmap对目标窗口进行截图,并将截图得到的图像设为强化窗口的背景;
为了改善用户的使用体验,在本实施例中,将对目标窗口进行截图后获取的图像设置为强化窗口的背景,从而使得强化窗口的外观与目标窗口基本一致且完全覆盖目标窗口,实现了在不约定目标窗口具体样式的情况下,引入安全输入方式的同时使得用户感观不发生变化,有利于改善用户体验。
步骤114:接收用户的输入信息,并判断用户按下的是“确定”按键还是“取消”按键,如果是“确定”按键,则执行步骤115;如果是“取消”按键,则直接执行步骤116;
步骤115:强化窗口将用户输入的信息通过Windows API PostMessage或者SendMessage发送给创建目标窗口的进程进行处理;
强化窗口也可以将用户输入的信息传给所属的第三方进程,再由第三方进程与目标窗口所属的进程(即创建目标窗口的进程)进行通信(具体手段如共享内存、文件、注册表、管道、消息等等),把用户输入的信息发给目标窗口所属的进程,完成人机交互。
步骤116:强化窗口通过WINDOWS定义的WM_CLOSE消息向目标窗口发出关闭消息,使目标窗口关闭,然后关闭自身,结束。
综上所述,本发明实施例提供的方法,通过提供的强化窗口对目标窗口进行重合覆盖,使得用户输入的信息能够发送给创建强化窗口的进程进行处理,从而有效确保用户通过界面输入信息的使用过程的安全可靠,增强了界面安全性。
实施例2
为了增强界面安全性,确保用户通过界面输入信息的使用过程的安全可靠,本发明实施例提供了一种增强界面安全性的方法,与实施例1不同在于,本实施例中将强化窗口封装为插件,在目标窗口显示时主动调用。在这种情况下,强化窗口的父窗口就是目标窗口。并且强化窗口中只包含输入控件,不包含确定按键和取消按键。
相应地,本发明实施例提供的方法,当目标窗口显示强化窗口时,参见图3,该方法内容如下:
步骤201:强化窗口获取要覆盖的目标窗口的区域。具体地,强化窗口通过WINDOWS窗口类方法GetClientRect获得目标窗口的客户区的坐标,其中客户区的左上角的坐标为(0,0)即原点;
目标窗口的客户区即为目标窗口中允许绘制子窗口的区域。
步骤202:强化窗口计算覆盖目标窗口中的输入控件所需的窗口大小;
优选地,在本实施例中,覆盖目标窗口中的输入控件所需的窗口大小为:宽度与目标窗口的客户区的宽度一致,高度与目标窗口中的输入控件的右下角相对原点的垂直坐标一致,并且为了进一步改善用户体验,还要在此基础上分别添加当前系统定义的窗口边框的宽度和高度,其中窗口边框的宽度和高度可利用Windows API GetSystemMetrics()得到。
步骤203:强化窗口利用WINDOWS窗口类方法MoveWindow或SetWindowPos将自身移到目标窗口客户区中,即将自身的左上角坐标设为(0,0),再将大小设置为步骤202中计算出的大小;
步骤204:强化窗口利用WINDOWS对话框类方法GetDlglTem获得目标窗口的输入控件的窗口指针,再利用WINDOWS窗口类方法GetWindowRect获得目标窗口的输入控件的坐标;
在本实施例中,方法GetDlglTem获取目标窗口的输入控件的窗口指针时所需的输入控件标识ID是由目标窗口调用并显示强化窗口时指定的。
步骤205:将强化窗口的输入控件与目标窗口的输入控件重合;
在本实施例步骤205中,重合的具体方法是:将强化窗口的输入控件的坐标设为与目标窗口的输入控件坐标相同;此时强化窗口的输入控件与目标窗口的输入控件重合并完全覆盖,用户将通过强化窗口的输入控件进行输入。
步骤206:利用WINDOWS API CreateCompatibleBitmap对目标窗口进行截图,选取与强化窗口的位置和尺寸相同的部分,将其设为强化窗口的背景;
步骤207:强化窗口等待用户输入信息,保存用户输入的信息,在被目标窗口调用时把信息传给目标窗口的相应成员变量,完成交互过程,然后结束;
本发明实施例提供了一种增强界面安全性的方法,通过提供的强化窗口对目标窗口进行重合覆盖,使得用户输入的信息能够发送给创建强化窗口的进程进行处理,从而有效确保用户通过界面输入信息的使用过程的安全可靠,增强了界面安全性。并且该方法使得界面在不影响用户体验的同时提高了安全性,并且还可以自动适应上层应用定义的不同界面。
本发明实施例中的“接收”一词可以理解为主动从其他模块获取也可以是接收其他模块发送来的信息。
本领域技术人员可以理解附图只是一个优选实施例的示意图,附图中的模块或流程并不一定是实施本发明所必须的。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
本发明实施例中的部分步骤,可以利用软件实现,相应的软件程序可以存储在可读取的存储介质中,如光盘或硬盘等。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。