防止剪切板数据泄露的方法和装置与流程

文档序号:17004619发布日期:2019-03-02 01:58阅读:716来源:国知局
防止剪切板数据泄露的方法和装置与流程

本发明涉及计算机术领域,更具体地,涉及一种防止剪切板数据泄露的方法和装置。



背景技术:

计算机技术中为了防止数据泄露,通常会采用对电子文档加密的方式,但该方式无法避免已打开的电子文档内容被复制、粘贴。当通过计算机操作系统的剪切板进行复制、粘贴时可能会造成加密电子文档的数据泄露。例如,通常应用程序(如office等)的复制、粘贴操作需要调用操作系统的剪切板,这样数据内容会放置在系统剪切板上,由于其他应用程序也会监听、调用该系统剪切板,因此,系统剪切板的内容可以被其他应用程序获取,从而造成数据泄露。



技术实现要素:

有鉴于此,本发明实施例旨在解决因使用系统剪切板而造成数据泄露的技术问题。

根据本发明实施例提供的一种防止数据剪切板数据泄露的方法,包括:当应用程序开始复制操作时,通过调用系统剪切板内容设置函数将内容放置到系统剪切板;当应用程序开始粘贴操作时,判断应用程序是否为需要保护剪切板内容的应用程序;如果是需要保护剪切板内容的应用程序,则通过调用系统剪切板内容获取函数返回系统剪切板的内容;如果是无需保护剪切板内容的应用程序,则触发执行该应用程序中的hook代码,其中,无需保护剪切板内容的应用程序中通过动态链接库dll注入有hook代码。在本发明实施例中,执行该应用程序中的hook代码包括判断要粘贴的内容是否为需要保护剪切板内容的应用程序的内容,如果是,则不返回系统剪切板的所述内容;如果不是,则返回系统剪贴板的所述内容。

根据本发明实施例的一种防止剪切板数据泄露的装置,包括:注入模块,用于通过动态链接库dll注入hook代码到无需保护剪切板内容的应用程序中;剪切板内容设置模块,用于在应用程序进行复制操作时,通过调用系统剪切板设置函数将内容放置到系统剪切板。该装置进一步包括剪切板内容获取模块,其包括判断模块,与注入模块连接,用于在应用程序开始粘贴操作时,判断所述应用程序是否为需要保护剪切板内容的应用程序;返回模块,与所述判断模块连接,用于在所述判断模块判断为否时,触发执行该应用程序中的hook代码,从而判断要粘贴的内容是否为需要保护剪切板内容的应用程序的内容,如果是,则不返回所述系统剪切板的该内容;如果不是,则返回所述系统剪贴板的该内容。

在可选实施例中,返回模块还用于在所述判断模块判断为是时,通过调用系统剪切板获取函数返回所述系统剪切板的内容。

根据本发明实施例提供的另一种防止剪切板数据泄露的方法,包括:在第一应用程序中采用动态链接库dll注入hook代码;当第一应用程序开始复制操作时,触发执行hook代码内部的剪切板设置函数来设置内部剪切板的格式和内容,并对应放置到所述hook内部的队列中;当所述第一应用程序开始粘贴操作时,触发执行hook代码内部的剪切板获取函数,根据剪切板格式从所述hook内部队列中查询对应的剪切板内容,当查询到对应的剪切板内容时,返回该剪切板格式对应的内容。当没有查询到对应的剪切板内容时,返回为空值。

在可选实施例中,在触发执行hook代码内部的剪切板获取函数之后,所述方法还包括:调用系统剪切板函数获取系统剪切板的内容;根据系统剪切板的所述内容判断在所述第一应用程序开始粘贴操作之前是否有第二应用程序执行过复制操作,其中所述第二应用程序未注入有hook代码;如果是,则返回该第二应用程序复制在系统剪切板的内容;如果否,则根据剪切板格式从所述hook内部队列中查询相应的剪切板内容。

根据本发明的实施例的另外一种防止剪切板数据泄露的装置,包括:注入模块,用于通过动态链接库dll注入hook代码到第一应用程序中;内部剪切板内容设置模块,用于在所述第一应用程序开始复制操作时,触发执行hook代码内部的剪切板设置函数来设置内部剪切板的格式和内容,并对应放置到所述hook内部的队列中;以及,内部剪切板内容获取模块,其包括:查询模块、判断模块和返回模块,其中查询模块,用于在第一应用程序开始粘贴操作时,触发执行hook内部的剪切板获取函数,根据剪切板格式从所述hook内部队列中查询对应的剪切板内容;判断模块,与所述查询模块连接,用于判断是否查询到对应的剪切板内容;返回模块,与所述判断模块连接,用于在所述判断模块判断为查询到对应的剪切板内容时,返回该剪切板格式对应的内容。

在可选实施例中,返回模块还用于在所述判断模块判断出没有查询到对应的剪切板内容时,返回空值。

在可选实施例中,所述装置还包括系统剪切板处理模块,用于在查询模块触发执行hook内部的剪切板获取函数之后,调用系统剪切板获取函数来获取系统剪切板的内容,以及,根据系统剪切板的所述内容判断在所述第一应用程序开始粘贴操作之前是否有第二应用程序执行过复制操作,其中所述第二应用程序未注入有hook代码,判断为所述第二应用程序未执行过复制操作时,指示所述查询模块根据剪切板格式从所述hook内部队列中查询对应的剪切板内容;

所述返回模块还用于在系统剪切板处理模块判断为执行过复制操作时,则返回所述第二应用程序复制在系统剪切板的内容。

通过本发明实施例的防止数据剪切板数据泄露的方法和装置,可以防止通过系统剪切板的复制、粘贴操作造成的数据泄露,提高数据的安全性。

附图说明

图1是根据本发明一种实施例的防止剪切板数据泄露的方法的流程示意图。

图2是根据本发明一种实施例的防止剪切板数据泄露的装置的示意框图。

图3是根据本发明另一种实施例的防止剪切板数据泄露的方法的流程示意图。

图4是根据本发明一种实施例的防止剪切板数据泄露的装置的示意框图。

图5是根据本发明另一种实施例的防止剪切板数据泄露的装置的示意框图。

具体实施方式

下列公开提供了许多不同的实施例或例子,以实现本发明的不同特征。下面描述了部件和方法步骤的具体例子以简化本公开。当然,这些仅是例子并不旨在限制。应该意识到,可以将这里所公开的内容应用在多种广泛形式中,并且这里所公开的任何特定结构和/或功能仅仅是描述性的。基于这里所教导的内容,本领域技术人员应该意识到,可以独立于任何其他方面实现这里所公开的方面,并且可以以多种方式对这些方面中的两个或多个进行组合。

实施例一

图1是根据本发明一种实施例的防止剪切板数据泄露的方法的流程示意图。在本实施例中,将应用程序分为需要保护剪切板内容的应用程序和不需要保护剪切板内容的应用程序。无论是需要保护剪切板内容和不需要保护剪切板内容的应用程序,当执行复制操作时,调用系统剪切板设置函数来设置复制内容。当执行粘贴操作时,对于需要保护剪贴板内容的应用程序,仍调用系统剪切板进行粘贴;对于无需保护剪贴板内容的应用程序,通过预先以dll注入的hook拦截,执行hook的内部代码来获取系统剪贴板的内容。如图1所述,该方法包括:

s101,当应用程序开始复制操作时,调用系统剪切板设置函数将内容放置到系统剪切板。例如,调用系统剪切板设置函数可以是调用setclipboarddata函数来设置复制内容并放置到系统剪贴板。

s102,当应用程序开始粘贴操作时,判断该应用程序是否为需要保护剪切板内容的应用程序,如果是,则执行s103,如果不是,则执行s104。

s103,调用系统剪切板获取函数来获取剪切板的内容,例如,可以是调用getclipboarddata函数来获取剪贴板的内容。

s104,触发执行该应用程序中的hook代码。无需保护剪切板内容的应用程序中预先通过动态链接库dll注入有hook代码。本发明实施例中,在应用程序调用系统剪切板获取函数、准备使用系统剪切板之前,通过hook拦截,执行hook内部的代码,进行hook内部剪切板内容获取的设置。

s105,判断要粘贴的内容是否为需要保护剪切板内容的应用程序的内容。

该步骤中具体判断的原理是,在系统进行复制操作的时候,会先清空剪切板的,所以只要能获取到系统剪切板内容有对应需保护的应用程序复制内容的格式,此时剪切板内容就是需要保护剪切板的应用程序的内容。

如果判断为是,则执行s106:不返回系统剪切板的该内容。如果判断为否,则执行s107:返回系统剪贴板的该内容。

在本发明实施例中,对于需要保护剪切板内容的应用程序,是直接调用系统剪切板实现复制和黏贴操作的。但是将需要保护剪切板内容的应用程序内容复制,黏贴到其他的不需要保护剪切板内容的应用程序中前,基于s104和s105步骤的原理,通过hook进行拦截,因此无法将剪切板中的需要保护的内容黏贴到其他应用程序中,这样就可以防止阅读通过复制黏贴的操作将需要保护的信息泄露出去,实现信息保护的效果。

实施例二

图2是根据本发明一种实施例的防止剪切板数据泄露的装置的示意框图。

如图2所示,该装置20包括注入模块22,用于通过动态链接库dll注入执行hook代码的方式,注入到无需保护剪切板内容的应用程序中。装置20还包括剪切板内容设置模块24,用于在应用程序进行复制操作时,通过调用系统剪切板设置函数(例如setclipboarddata函数)将内容放置到系统剪切板。

该装置20进一步包括剪切板内容获取模块26,其包括:与注入模块22连接的判断模块28和与判断模块28连接的返回模块30。判断模块28,用于在应用程序开始粘贴操作时,判断应用程序是否为需要保护剪切板内容的应用程序。

返回模块30,用于在判断模块28判断为否时,触发执行该应用程序中的hook代码,从而判断要粘贴的内容(例如系统剪切板的当前内容)是否为需要保护剪切板内容的应用程序的内容,如果是,则不返回系统剪切板的该内容;如果不是,则返回系统剪贴板的该内容。

返回模块30,用于在判断模块28判断为是时,通过调用系统剪切板获取函数(例如getclipboarddata函数)返回系统剪切板的内容。

除需要保护剪切板内容的应用程序以外,上述实施例需对其他应用程序均进行控制,系统资源利用不高;且复制、粘贴内容仍在系统剪切板上,仍有被非法获取的风险。

实施例三

图3是根据本发明另一实施例的防止剪切板数据泄露的方法的流程示意图。

在本实施例中,预先采用动态链接库dll注入执行hook代码的方式,在应用程序进程中注入hook代码。

当应用程序开始复制操作时,在应用程序调用系统剪切板设置函数、准备使用系统剪切板之前,通过hook拦截,执行hook内部的代码,进入到hook内部的剪切板设置函数,该函数能够设置hook内部剪切板的格式和内容,并将格式和内容对应地放置到hook内部的队列中,从而避免调用原系统剪切板设置函数。

当该应用程序开始粘贴操作时,在应用程序调用系统剪切板获取函数、准备使用系统剪切板之前,通过hook拦截,执行hook内部的代码,进入到hook内部的剪切板内容获取函数,该函数从hook内部队列中根据剪切板格式查找对应的剪切板内容,当有对应的内容时,返回该剪切板格式对应的内容,当没有查找到对应的剪切板内容时,返回空。

如图3所示,该方法包括:

s301,当应用程序开始复制操作时,触发执行hook内部的剪切板设置

函数。

s302,通过hook内部的剪切板设置函数设置hook内部剪切板的格式和内容。例如,hook内部的剪切板设置函数可以是hooksetclipboarddata函数。

s303,将设置好的格式和内容对应的放置到hook内部的队列中。

s304,当应用程序开始粘贴操作时,触发执行hook内部的剪切板获取函数。

s305根据剪切板格式从hook内部队列中查询相应的剪切板内容。例如,hook内部的剪切板获取函数可以是调用hookgetclipboarddata函数来获取内部剪切板内容。

s306,判断是否查询到对应的剪切板内容。如果判断为是,则执行s307:返回该剪切板格式对应的内容。如果判断为否,则执行s308:返回空值。

本实施例的技术方案利用hook技术拦截所有应用程序的复制的操作时,在调用系统函数来设置复制内容前,通过hook拦截,进入到hook内部的剪切板设置函数,该函数设置了hook内部剪切板的格式和内容,并将格式和内容对应的放置到hook内部的队列中,从而避免调用原系统函数。避免了剪切板内的内容被非法获取的风险。增强安全性,提高效率,节省系统资源。

本发明上述实施例不需要改变原文档内容,也不需要对文档进行加解密、创建加密文件和阅读器,完全使用内部剪切板,提高了安全性。另外,本实施例还不需要循环检测系统剪切板内容并对其做出干扰,因而更简洁、效率更高。

实施例四

根据一个可选的实施方式,在实施例三的基础上,将s301中的应用程序称为应用程序a,该方法可包括在s304之后,先调用系统剪切板函数获取系统剪切板的内容,然后根据系统剪切板的内容判断在应用程序a进行复制操作后到应用程序a进行粘贴操作期间是否有其他应用程序执行过复制操作,如果有其他应用程序执行过复制操作,则返回其他应用程序复制在系统剪切板的内容;如果没有,则继续s306。本发明上述实施例不影响原系统剪切板内容的使用,且不需要对其他应用程序获取系统剪切板内容做控制,节省了资源。

实施例五

根据本发明实施例三,当没有查询到对应的格式时,返回为空值,这会造成系统剪切板也被清空。为了避免hook内部剪切板影响系统剪切板的正常使用的问题,提供了本实施例。

在本实施例的防止剪切板数据泄露的方法中,也是预先采用动态链接库dll注入执行hook代码的方式,在应用程序进程中注入hook代码。本实施例的防止剪切板数据泄露的方法包括实施例三中描述的s301-s306(图3中示出)。此外,本实施例的方法还包括获取系统剪切板的内容,并将系统剪切板的内容保存在指定变量中。在一实施例中,将系统剪切板的内容保存在指定变量中可以在例如s302执行后执行。需要说明的是,该实施例仅为示例说明的目的以更好地理解本发明实施例的技术方案,不应理解为是实施方式的限制。本实施例的方法还包括在执行s304之后,判断为没有查询到对应的剪贴板内容时,获取并返回指定变量中的系统剪切板的内容。

实施例六

图4是根据本发明一种实施例的防止剪切板数据泄露的装置的示意框图。如图4所示,该装置40包括注入模块42,用于通过动态链接库dll注入执行hook代码的方式,注入到应用程序中。在一实施方式中,所有应用程序都注入有各自的hook代码;在另一实施方式中,部分应用程序注入有hook代码。装置40还包括内部剪切板内容设置模块44,用于在应用程序进行复制操作时,触发执行hook内部的剪切板设置函数来设置hook内部剪切板的格式和内容,并对应放置到hook内部的队列中。

该装置40进一步包括内部剪切板内容获取模块46,其包括:查询模块48、与查询模块48连接的判断模块50和与判断模块50连接的返回模块52。查询模块48,用于在应用程序开始粘贴操作时,触发执行hook内部的剪切板获取函数,从而根据剪切板格式从hook内部队列中查询对应的剪切板内容。判断模块50,用于判断是否查询到对应的剪切板内容。返回模块52,用于在判断模块50判断为查询到对应的剪切板内容时,返回该剪切板格式对应的内容。返回模块52,还用于在判断模块50判断为没有查询到对应的剪切板内容时,返回空值。

在其他一些实施例中,实施例六中的返回模块52还用于在判断模块50判断出没有查询到对应的剪切板内容时,获取并返回指定变量中的系统剪切板的内容,其中指定变量中预先存储有系统剪切板的内容。

在本实施例中,由于完全使用内部剪切板,因而可提高内容的安全性。此外,在独立内部剪切板返回值为空时,不调用清理函数,而赋值之前保存的系统剪切板的内容,不影响系统剪切板内容从而不影响其他应用程序对系统剪切板的正常使用。

实施例七

图5是根据本发明另一种实施例的防止剪切板数据泄露的装置的示意框图。如图5所示,装置60包括注入模块62、内部剪切板内容设置模块64、内部剪切板内容获取模块66。其中,注入模块62和内部剪切板内容设置模块64实现的功能与实施例五中描述的装置的注入模块42和内部剪切板内容设置模块64(图4中示出)实现的功能类似,在此不再赘述。

图5中的内部剪切板内容获取模块66包括查询模块68、与查询模块68连接的判断模块70和与判断模块70连接的返回模块72。其中,查询模块68和判断模块70实现的功能与实施例五中描述的查询模块48和判断模块50(图4中示出)实现的功能类似,在此不再赘述。

所述装置60还包括系统剪切板处理模块69,用于在查询模块68触发执行hook内部的剪切板获取函数之后,调用系统剪切板获取函数来获取系统剪切板的内容,以及,根据系统剪切板的内容判断在应用程序开始粘贴操作之前是否有其他应用程序执行过复制操作,其中,该其他应用程序未注入有hook代码。当系统剪切板处理模块69判断为其他应用程序未执行过复制操作时,指示查询模块68根据剪切板格式从hook内部队列中查询对应的剪切板内容。

返回模块72还用于在系统剪切板处理模块69判断为其他应用程序执行过复制操作时,则返回该其他应用程序复制在系统剪切板的内容。

下面讨论是根据本发明实施例的防止剪切板数据泄露的方法的一个示例。

1)需要剪切板保护的[该实施例中,外发程序已修改为需要剪切保护的程序]程序a下复制(对应于注入有hook代码的应用程序下的文件复制操作):

具体而言,通过hookhandlesetclipboarddata(uintuformat,handlehmem)函数,将uformat和hmem以组的方式存放在应用程序内部队列中,不调用原始apisetclipboarddata将uformat和hmem通知系统剪切板。

之后的用户操作可能会有以下几种可能:

2)在其他应用程序下粘贴:

由于需要剪切板保护的程序没有调用原始apisetclipboarddata()函数将uformat和hmem通知系统剪切板,所以其他应用程序调用apigetclipboarddata()函数将无法获取到外发应用程序设置的复制内容。

3)在其他应用程序下复制:

其他应用程序调用setclipboarddata()将uformat和hmem通知系统剪切板。系统剪切板将存有对应的uformat和hmem。

4)在需要剪切板保护的程序a或b下复制:

继续1),例如在外发应用程序a下通过hookhandlesetclipboarddata(uintuformat,handlehmem)函数进行复制,或者外发应用程序b下通过hookhandlesetclipboarddata(uintuformat,handlehmem)函数进行复制。

5)在需要剪切板保护的程序a下粘贴:

调用handlegetclipboarddata(uintuformat),先调用原始apigetclipboarddata来获取剪切板内容从而判断是否有其他应用程序复制。

如果从外发应用程序a下复制到外发应用程序a下粘贴的期间有其他应用程序复制过,返回其他应用程序设置的hmem。如果期间没有其他应用程序复制过,通过uformat来查找应用程序内部队列中是否存在该组,若存在,返回对应的hmem,若不存在,返回空。

通过本发明实施例的防止剪切板数据泄露的装置可进一步参考本公开前面防止剪切板数据泄露的方法中的对应描述,在此不再赘述。应当理解,可以以硬件、软件、固件、中间件、代码或其任何恰当组合来实现这里描述的实施例。对于硬件实现,处理器可以在一个或多个下列单元中实现:专用集成电路(asic)、数字信号处理器(dsp)、数字信号处理设备(dspd)、可编程逻辑器件(pld)、现场可编程门阵列(fpga)、处理器、控制器、微控制器、微处理器、设计用于实现这里所描述功能的其他电子单元或其组合。

上面概述了几个实施例的特征使得本领域技术人员可较好地理解本公开的方面。本领域技术人员应当理解他们可容易地使用本公开作为基础以设计或修改其他工艺和结构以实行相同目的和/或实现在此介绍的实施例的相同优点。本领域技术人员也应意识到这种等同构造没有脱离本公开的精神和范围内,并且他们在没有脱离本公开的精神和范围情况下可以做各种改变、代替和更改。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1