应用内防火墙实现方法、系统及存储介质与流程

文档序号:19938543发布日期:2020-02-14 22:52阅读:272来源:国知局
应用内防火墙实现方法、系统及存储介质与流程

本发明涉及移动安全技术领域,尤其涉及一种应用内防火墙实现方法、系统及存储介质。



背景技术:

目前移动app开发者开发app时,往往会集成各种第三方应用程序模块,用于完善app的各种功能及开发体验,这些集成的第三方应用程序模块在运行时便自然拥有了该app的所有权限,可以在app开发者不知情情况下将app的一些隐私数据回传到第三方的服务器中。这在一定程度上造成了该app的隐私数据被第三方应用程序模块窃取并可能被恶意利用。



技术实现要素:

针对上述技术问题,本发明所述的技术方案通过在应用程序开发过程中,在资源目录下添加可配置的白名单,进而对应用程序的网络连接行为进行有效管控,对于白名单外的网络连接行为进行及时拦截。

本发明采用如下方法来实现:应用内防火墙实现方法,包括:

在待开发应用的资源目录下添加白名单配置文件;

hook自身进程的预设函数,判断是否存在网络连接行为;

若存在网络连接行为,则分析判断所述网络连接行为是否存在于白名单配置文件中,若存在则放行,否则拦截该网络连接行为。

进一步地,所述白名单配置文件,具体包括允许通过的域名、ip、端口号。

更进一步地,所述预设函数,包括:connect函数、sendto函数、gethostbyname函数。

其中,若存在网络连接行为,则分析判断所述网络连接行为是否存在于白名单配置文件中,若存在则放行,否则拦截该网络连接行为,具体包括:

若发现调用connect函数的行为,则提取欲连接的ip、端口号,并判断所述ip和端口号是否存在于白名单配置文件中,若存在,则调用系统原connect函数进行连接操作,否则返回错误值并记录;

若发现调用sendto函数的行为,则提取欲连接的ip、端口号,并判断所述ip和端口号是否存在于白名单配置文件中,若存在,则调用系统原sendto函数进行发送操作,否则返回错误值并记录;或者,

若发现调用gethostbyname函数的行为,则提取欲连接的域名,并判断所述域名是否存在于白名单配置文件中,若存在,则调用系统原gethostbyname函数进行域名解析,否则返回错误值并记录。

本发明可以采用如下系统来实现:应用内防火墙实现系统,包括:

预配置模块,用于在待开发应用的资源目录下添加白名单配置文件;

网络行为判断模块,用于hook自身进程的预设函数,判断是否存在网络连接行为;

白名单匹配模块,用于若存在网络连接行为,则分析判断所述网络连接行为是否存在于白名单配置文件中,若存在则放行,否则拦截该网络连接行为。

进一步地,所述白名单配置文件,具体包括允许通过的域名、ip、端口号。

更进一步地,所述预设函数,包括:connect函数、sendto函数、gethostbyname函数。

其中,所述白名单匹配模块,具体用于:

若发现调用connect函数的行为,则提取欲连接的ip、端口号,并判断所述ip和端口号是否存在于白名单配置文件中,若存在,则调用系统原connect函数进行连接操作,否则返回错误值并记录;

若发现调用sendto函数的行为,则提取欲连接的ip、端口号,并判断所述ip和端口号是否存在于白名单配置文件中,若存在,则调用系统原sendto函数进行发送操作,否则返回错误值并记录;或者,

若发现调用gethostbyname函数的行为,则提取欲连接的域名,并判断所述域名是否存在于白名单配置文件中,若存在,则调用系统原gethostbyname函数进行域名解析,否则返回错误值并记录。

本发明同时提出一种非临时性计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如上任一所述的应用内防火墙实现方法。

综上,本发明给出应用内防火墙实现方法、系统及存储介质,该防火墙系统可以作为一个应用程序模块提供给应用程序开发者,应用程序开发者在开发应用程序时,需要在待开发应用的资源目录下配置白名单配置文件,并在应用程序应用的启动代码中启动该防火墙系统,该系统会hook应用程序自身进程的预设函数,继而判断是否存在网络连接行为,若存在则提取相关信息并判断所述网络连接行为是否为白名单配置文件中配置可以放行的网络连接行为,若是则放行,否则拦截该网络连接行为。通过本发明所提供的应用内防火墙实现方法、系统及存储介质,通过在白名单配置文件中声明当前的应用程序可以连接哪些服务的哪些端口,而在白名单配置文件以外的网络连接行为则将被禁止,保证了应用程序开发者对应用程序自身产生的网络连接行为的可控性。

附图说明

为了更清楚地说明本发明的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明中记载的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本发明提供的应用内防火墙实现方法实施例流程图;

图2为本发明提供的应用内防火墙实现系统实施例结构图。

具体实施方式

本发明给出了应用内防火墙实现方法、系统及存储介质的实施例,为了使本技术领域的人员更好地理解本发明实施例中的技术方案,并使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图对本发明中技术方案作进一步详细的说明:

移动应用的开发者在进行应用程序开发时,通常会集成第三方应用程序模块,用于完善应用程序的功能。例如:某开发者想在自己的密码管理app中实现一个人脸解锁功能,但限于自身能力,该开发者选择集成第三方的人脸识别应用程序模块。但是可能存在如下风险,比如在采集人脸信息时,该应用程序模块会不会把用户的人脸指纹信息上传到恶意的服务中,从而在其他场景中使用该人脸指纹信息可破解该密码管理应用程序所记录的加密信息。

为了解决上述问题,应用程序开发者可以采用本发明所提供的应用内防火墙,在该应用程序的资源目录下设置白名单配置文件,并配置仅用于用户统计功能的网络域名、ip和端口可用,其他网络数据流量均被拒绝,具体实施例如下:

本发明首先提供了一种应用内防火墙实现方法实施例,如图1所示,包括:

s101:在待开发应用的资源目录下添加白名单配置文件;其中,白名单配置文件中存储有允许当前应用程序进行网络连接的相关信息,具体包括但不限于:域名、ip或者端口号。

s102:hook自身进程的预设函数,判断是否存在网络连接行为,若存在,则执行s103,否则继续执行s102;其中,所述预设函数为应用程序进行网络连接直接或间接需要调用的函数,包括但不限于:connect函数、sendto函数、gethostbyname函数。

s103:分析判断所述网络连接行为是否存在于白名单配置文件中,若存在则放行该网络连接行为,否则拦截该网络连接行为;具体包括但不限于:

若发现调用connect函数的行为,则提取欲连接的ip、端口号,并判断所述ip和端口号是否存在于白名单配置文件中,若存在,则调用系统原connect函数进行连接操作,否则返回错误值并记录;其中,所述connect函数用于tcp连接;

若发现调用sendto函数的行为,则提取欲连接的ip、端口号,并判断所述ip和端口号是否存在于白名单配置文件中,若存在,则调用系统原sendto函数进行发送操作,否则返回错误值并记录;其中,所述sendto函数用于udp连接;

或者,若发现调用gethostbyname函数的行为,则提取欲连接的域名,并判断所述域名是否存在于白名单配置文件中,若存在,则调用系统原gethostbyname函数进行域名解析,否则返回错误值并记录;其中,所述gethostbyname函数用于将域名信息转换为ip地址。

其中,上述所列函数仅为了具体说明本实施例的技术方案,而应用程序进行对外网络连接可能使用到的所有函数都可以被hook,进而实现对网络连接行为的监控,最终判断是否允许其通行。

本发明其次提供了应用内防火墙实现系统实施例,如图2所示,包括:

预配置模块201,用于在待开发应用的资源目录下添加白名单配置文件;

网络行为判断模块202,用于hook自身进程的预设函数,判断是否存在网络连接行为;

白名单匹配模块203,用于若存在网络连接行为,则分析判断所述网络连接行为是否存在于白名单配置文件中,若存在则放行,否则拦截该网络连接行为。

优选地,所述白名单配置文件,具体包括允许通过的域名、ip、端口号。

更优选地,所述预设函数,包括:connect函数、sendto函数、gethostbyname函数。

其中,所述白名单匹配模块203,具体用于:

若发现调用connect函数的行为,则提取欲连接的ip、端口号,并判断所述ip和端口号是否存在于白名单配置文件中,若存在,则调用系统原connect函数进行连接操作,否则返回错误值并记录;

若发现调用sendto函数的行为,则提取欲连接的ip、端口号,并判断所述ip和端口号是否存在于白名单配置文件中,若存在,则调用系统原sendto函数进行发送操作,否则返回错误值并记录;或者,

若发现调用gethostbyname函数的行为,则提取欲连接的域名,并判断所述域名是否存在于白名单配置文件中,若存在,则调用系统原gethostbyname函数进行域名解析,否则返回错误值并记录。

本发明同时提出一种非临时性计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如上任一方法实施例所述的应用内防火墙实现方法。

本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同或相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。

如上所述,上述实施例给出了应用内防火墙实现方法、系统及存储介质的实施例,由于传统解决方法依赖于操作系统的防火墙环境,需要将实施代码模块集成到系统sdk中,或者需要获取系统的root权限才能够实现相关功能。而本发明所提供的上述实施例不需要在系统开发时进行源码修改,也不需要获取系统root权限,只是在应用程序开发时将本实施例的应用内防火墙作为一个软件模块集成到应用程序中,即可实现应用级别的恶意网络请求的拦截,进而解决现有应用开发中由于集成第三方模块从而造成隐私数据泄露的问题。

以上实施例用以说明而非限制本发明的技术方案。不脱离本发明精神和范围的任何修改或局部替换,均应涵盖在本发明的权利要求范围当中。

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