首页> 中国专利> 基于PHP扩展PDO实现应用访问和数据库访问行为关联的方法

基于PHP扩展PDO实现应用访问和数据库访问行为关联的方法

摘要

本发明公开了基于PHP扩展PDO实现应用访问和数据库访问行为关联的方法,涉及web开发技术领域,该方法包括将原PDO扩展提供PHP访问的类的名称PDO修改为HOOK_PDO;在PHP源码级别自定一个类的名称为PDO,继承HOOK_PDO类,在自定的PDO类里实现读取操作应用的用户,通过SQL注释的方式在原SQL中加入用户信息,将增加注释后SQL发送给数据库审计与防护系统;数据库审计与防护系统解析带注释的SQL,记录用户和SQL关联信息并访问数据库并返回数据给PHP应用程序。这样的方法,将用户信息和SQL两者关联起来后发送给中数据库审计与防护系统进行操作和访问溯源。在PHP应用源码不改变的情况下,更高效,更快捷的实现PHP应用访问和数据库访问关联,进行访问溯源和基于系统用户的访问控制。

著录项

  • 公开/公告号CN113157721A

    专利类型发明专利

  • 公开/公告日2021-07-23

    原文格式PDF

  • 申请/专利权人 北京中安星云软件技术有限公司;

    申请/专利号CN202110237127.5

  • 申请日2021-03-03

  • 分类号G06F16/242(20190101);G06F8/30(20180101);

  • 代理机构51308 成都鱼爪智云知识产权代理有限公司;

  • 代理人代述波

  • 地址 100000 北京市海淀区创业路8号5号楼4层5-6-401

  • 入库时间 2023-06-19 11:57:35

说明书

技术领域

本发明涉及web开发技术领域,具体而言,涉及基于PHP扩展PDO实现应用访问和数据库访问行为关联的方法。

背景技术

PHP(PHP:Hypertext Preprocessor,超文本预处理器)是一种通用开源脚本语言,吸收了C语言、Java和Perl的特点,利于学习,使用广泛,主要适用于Web开发领域。PDO扩展为PHP访问数据库定义了一个轻量级的、一致性的接口,它提供了一个数据访问抽象层,这样,无论使用什么数据库,都可以通过一致的函数执行查询和获取数据。

而在实际应用中,能够实现PHP应用访问和数据库访问关联的步骤较复杂,通常需要改变PHP应用源码。

发明内容

为了克服上述问题或者至少部分地解决上述问题,本发明实施例提供基于PHP扩展PDO实现应用访问和数据库访问行为关联的方法,在PHP应用源码不改变的情况下,更高效,更快捷的实现PHP应用访问和数据库访问关联。

本发明的实施例是这样实现的:

基于PHP扩展PDO实现应用访问和数据库访问行为关联的方法,包括以下步骤:修改PHP扩展PDO源码得到修改后的PDO扩展,修改后的PDO扩展将原PDO扩展提供PHP访问的类的名称PDO修改为HOOK_PDO;在PHP源码级别自定一个类的名称为PDO,继承HOOK_PDO类,在自定的PDO类里实现读取操作应用的用户,通过SQL注释的方式在原SQL中加入用户信息,将增加注释后SQL发送给数据库审计与防护系统;数据库审计与防护系统解析带注释的SQL,记录用户和SQL关联信息;数据库审计与防护系统根据用户和SQL关联信息访问数据库并返回数据给PHP应用程序。

这样的方法,在每台应用服务器重新编译定制的PHP扩展PDO,利用定制的PDO扩展来获取用户信息,将用户信息和SQL两者关联起来后发送给中数据库审计与防护系统进行操作和访问溯源。在PHP应用源码不改变的情况下,更高效,更快捷的实现PHP应用访问和数据库访问关联,进行访问溯源和基于系统用户的访问控制。

在本发明的一些实施例中,所述修改后的PDO扩展将原PDO扩展提供PHP访问的类的名称PDO修改为HOOK_PDO的步骤包括:

php主程序调用INIT_CLASS_ENTRY(ce,“HOOK_PDO”,pdo_dbh_functions)函数发送至修改后的PDO扩展进行HOOK_PDO类注册,修改后的PDO扩展将HOOK_PDO类注册成功的信息返回至php主程序。

在本发明的一些实施例中,所述在PHP源码级别自定一个类的名称为PDO,继承HOOK_PDO类的步骤包括:

php主程序调用pdo驱动的PHP_MINIT方法并发送至pdo驱动,pdo驱动调用php_pdo_register_driver注册自己,修改后的PDO扩展将pdo驱动注册成功的信息依次发送回PDO驱动及php主程序。

在本发明的一些实施例中,所述PDO类里实现读取操作应用的用户,通过SQL注释的方式在原SQL中加入用户信息,将增加注释后SQL发送给数据库审计与防护系统的步骤包括:

php主程序响应用户的访问操作后调用PHP_RINIT方法发送至修改后的PDO扩展进行PDO类注册,修改后的PDO扩展将PDO类注册成功的信息返回至php主程序;

PHP应用程序响应php主程序访问并根据其配置的数据库类型、IP、端口、库获取pdo驱动发送至修改后的PDO扩展,修改后的PDO扩展返回PDO对象给PHP应用程序;

PHP应用程序执行SQL发送至修改后的PDO扩展,修改后的PDO扩展以注释的方式将用户的信息加入到SQL并发送SQL请求至数据库审计与防护系统。

在本发明的一些实施例中,所述数据库审计与防护系统解析带注释的SQL,记录用户和SQL关联信息的步骤包括:

数据库审计与防护系统接受并解析带注释的SQL并依据解析出的SQL和用户信息以及策略信息,将用户访问行为和数据库访问行为关联,进行基于用户的访问控制。

在本发明的一些实施例中,所述数据库审计与防护系统根据用户和SQL关联信息访问数据库并返回数据给PHP应用程序的步骤包括:

数据库审计与防护系统把用户和SQL关联信息发送至数据库获取对应数据并返回对应数据给PHP应用程序。

在本发明的一些实施例中,还包括将对应数据依次返回给数据库审计与防护系统、修改后的PDO扩展、pdo驱动、PHP应用程序、php主程序。

在本发明的一些实施例中,所述SQL注释的方式采用单行注释。

在本发明的一些实施例中,所述SQL注释的方式采用多行注释。

在本发明的一些实施例中,所述数据库包括Cubrid、FreeTDS、Microsoft SQLServer、Sybase、Firebird、IBM DB2、IBM Informix Dynamic Server、Mysql、Oracle、PostgreSQL、SQLite、SQL Azure。

本发明实施例至少具有如下优点或有益效果:

基于PHP扩展PDO实现应用访问和数据库访问行为关联的方法,包括以下步骤:修改PHP扩展PDO源码得到修改后的PDO扩展,修改后的PDO扩展将原PDO扩展提供PHP访问的类的名称PDO修改为HOOK_PDO;在PHP源码级别自定一个类的名称为PDO,继承HOOK_PDO类,在自定的PDO类里实现读取操作应用的用户,通过SQL注释的方式在原SQL中加入用户信息,将增加注释后SQL发送给数据库审计与防护系统;数据库审计与防护系统解析带注释的SQL,记录用户和SQL关联信息;数据库审计与防护系统根据用户和SQL关联信息访问数据库并返回数据给PHP应用程序。

这样的方法,在原有的PHP应用服务器部署定制PDO扩展的PHP便在应用中配置应用获取用户信息的实现类名称及方法名称;PDO驱动收到SQL时,通过读取类名称和方法名,调用方法获取用户信息,将用户信息以注释的形式与SQL进行绑定;PDO驱动调用原生的PDO驱动,将绑定有用户信息的SQL传给原生PDO驱动;数据库审计与防护系统收到SQL信息后,从SQL信息中解析出用户信息;数据库审计与防护系统依据解析出的SQL和用户信息以及策略信息,将用户访问行为和数据库访问行为关联,进行基于用户的访问控制。这样,在每台应用服务器重新编译定制的PHP扩展PDO,利用定制的PDO扩展来获取用户信息,将用户信息和SQL两者关联起来后发送给中数据库审计与防护系统进行操作和访问溯源。在PHP应用源码不改变的情况下,更高效,更快捷的实现PHP应用访问和数据库访问关联,进行访问溯源和基于系统用户的访问控制。

附图说明

为了更清楚地说明本发明实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本发明的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。

图1为本发明基于PHP扩展PDO实现应用访问和数据库访问行为关联的方法一实施例的流程图;

图2为本发明基于PHP扩展PDO实现应用访问和数据库访问行为关联的方法一实施例的原理图。

具体实施方式

为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本发明实施例的组件可以以各种不同的配置来布置和设计。

因此,以下对在附图中提供的本发明的实施例的详细描述并非旨在限制要求保护的本发明的范围,而是仅仅表示本发明的选定实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。

在本发明实施例的描述中,还需要说明的是,除非另有明确的规定和限定,若出现术语“设置”、“连接”应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或一体地连接;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通。对于本领域的普通技术人员而言,可以根据具体情况理解上述术语在本发明中的具体含义。

实施例

在阐述实施例之前,为了便于本领域人员理解,需要对专业名词进行解释:

PDO:PHP访问数据库定义的轻量级一致接口,提供了一个数据访问抽象层,不管使用哪种数据库,都可以使用相同的函数(方法)来查询和获取数据。

PDO驱动:具体实现PDO接口的程序,提供数据库插入,更新,删除,查询的具体功能,目前支持的数据库类型为Cubrid、FreeTDS、Microsoft SQL Server、Sybase、Firebird、IBM DB2、IBM Informix Dynamic Server、Mysql、Oracle、PostgreSQL、SQLite、MicrosoftSQL Server、SQL Azure。

请参照图1,图1为本发明基于PHP扩展PDO实现应用访问和数据库访问行为关联的方法的流程图;

本实施例提供基于PHP扩展PDO实现应用访问和数据库访问行为关联的方法,包括以下步骤:

S11:修改PHP扩展PDO源码得到修改后的PDO扩展,修改后的PDO扩展将原PDO扩展提供PHP访问的类的名称PDO修改为HOOK_PDO;

示例性的,php主程序调用INIT_CLASS_ENTRY(ce,“HOOK_PDO”,pdo_dbh_functions)函数发送至修改后的PDO扩展进行HOOK_PDO类注册,修改后的PDO扩展将HOOK_PDO类注册成功的信息返回至php主程序

S12:在PHP源码级别自定一个类的名称为PDO,继承HOOK_PDO类,在自定的PDO类里实现读取操作应用的用户,通过SQL注释的方式在原SQL中加入用户信息,将增加注释后SQL发送给数据库审计与防护系统;

示例性的,php主程序调用pdo驱动的PHP_MINIT方法并发送至pdo驱动,pdo驱动调用php_pdo_register_driver注册自己,修改后的PDO扩展将pdo驱动注册成功的信息依次发送回PDO驱动及php主程序。php主程序响应用户的访问操作后调用PHP_RINIT方法发送至修改后的PDO扩展进行PDO类注册,修改后的PDO扩展将PDO类注册成功的信息返回至php主程序;PHP应用程序响应php主程序访问并根据其配置的数据库类型、IP、端口、库获取pdo驱动发送至修改后的PDO扩展,修改后的PDO扩展返回PDO对象给PHP应用程序;PHP应用程序执行SQL发送至修改后的PDO扩展,修改后的PDO扩展以注释的方式将用户的信息加入到SQL并发送SQL请求至数据库审计与防护系统。

S13:数据库审计与防护系统解析带注释的SQL,记录用户和SQL关联信息;数据库审计与防护系统根据用户和SQL关联信息访问数据库并返回数据给PHP应用程序。

示例性的,数据库审计与防护系统接受并解析带注释的SQL并依据解析出的SQL和用户信息以及策略信息,将用户访问行为和数据库访问行为关联,进行基于用户的访问控制。数据库审计与防护系统把用户和SQL关联信息发送至数据库获取对应数据并返回对应数据给PHP应用程序。

本申请的设计原理:经过长期的研究和实践,发明人发现在现有技术中,能够实现PHP应用访问和数据库访问关联的步骤较复杂,通常需要改变PHP应用源码。鉴于此,本申请提供一种基于PHP扩展PDO实现应用访问和数据库访问行为关联的方法。

这样的方法,在原有的PHP应用服务器部署定制PDO扩展的PHP便在应用中配置应用获取用户信息的实现类名称及方法名称;PDO驱动收到SQL时,通过读取类名称和方法名,调用方法获取用户信息,将用户信息以注释的形式与SQL进行绑定;PDO驱动调用原生的PDO驱动,将绑定有用户信息的SQL传给原生PDO驱动;数据库审计与防护系统收到SQL信息后,从SQL信息中解析出用户信息;数据库审计与防护系统依据解析出的SQL和用户信息以及策略信息,将用户访问行为和数据库访问行为关联,进行基于用户的访问控制。这样,在每台应用服务器重新编译定制的PHP扩展PDO,利用定制的PDO扩展来获取用户信息,将用户信息和SQL两者关联起来后发送给中数据库审计与防护系统进行操作和访问溯源。在PHP应用源码不改变的情况下,更高效,更快捷的实现PHP应用访问和数据库访问关联,进行访问溯源和基于系统用户的访问控制。

请参照图2,图2为本发明基于PHP扩展PDO实现应用访问和数据库访问行为关联的方法的原理图。

在本发明的一些实施例中,所述修改后的PDO扩展将原PDO扩展提供PHP访问的类的名称PDO修改为HOOK_PDO的步骤包括:

php主程序调用INIT_CLASS_ENTRY(ce,“HOOK_PDO”,pdo_dbh_functions)函数发送至修改后的PDO扩展进行HOOK_PDO类注册,修改后的PDO扩展将HOOK_PDO类注册成功的信息返回至php主程序。

在本发明的一些实施例中,所述在PHP源码级别自定一个类的名称为PDO,继承HOOK_PDO类的步骤包括:

php主程序调用pdo驱动的PHP_MINIT方法并发送至pdo驱动,pdo驱动调用php_pdo_register_driver注册自己,修改后的PDO扩展将pdo驱动注册成功的信息依次发送回PDO驱动及php主程序。

在本发明的一些实施例中,所述PDO类里实现读取操作应用的用户,通过SQL注释的方式在原SQL中加入用户信息,将增加注释后SQL发送给数据库审计与防护系统的步骤包括:

php主程序响应用户的访问操作后调用PHP_RINIT方法发送至修改后的PDO扩展进行PDO类注册,修改后的PDO扩展将PDO类注册成功的信息返回至php主程序;

PHP应用程序响应php主程序访问并根据其配置的数据库类型、IP、端口、库获取pdo驱动发送至修改后的PDO扩展,修改后的PDO扩展返回PDO对象给PHP应用程序;

PHP应用程序执行SQL发送至修改后的PDO扩展,修改后的PDO扩展以注释的方式将用户的信息加入到SQL并发送SQL请求至数据库审计与防护系统。

在本发明的一些实施例中,所述数据库审计与防护系统解析带注释的SQL,记录用户和SQL关联信息的步骤包括:

数据库审计与防护系统接受并解析带注释的SQL并依据解析出的SQL和用户信息以及策略信息,将用户访问行为和数据库访问行为关联,进行基于用户的访问控制。

在本发明的一些实施例中,所述数据库审计与防护系统根据用户和SQL关联信息访问数据库并返回数据给PHP应用程序的步骤包括:

数据库审计与防护系统把用户和SQL关联信息发送至数据库获取对应数据并返回对应数据给PHP应用程序。

在本发明的一些实施例中,还包括将对应数据依次返回给数据库审计与防护系统、修改后的PDO扩展、pdo驱动、PHP应用程序、php主程序。

在本发明的一些实施例中,所述SQL注释的方式采用单行注释。

在本发明的一些实施例中,所述SQL注释的方式采用多行注释。

在本发明的一些实施例中,所述数据库包括Cubrid、FreeTDS、Microsoft SQLServer、Sybase、Firebird、IBM DB2、IBM Informix Dynamic Server、Mysql、Oracle、PostgreSQL、SQLite、SQL Azure。

综上,本发明的实施例提供一种基于PHP扩展PDO实现应用访问和数据库访问行为关联的方法,包括以下步骤:修改PHP扩展PDO源码得到修改后的PDO扩展,修改后的PDO扩展将原PDO扩展提供PHP访问的类的名称PDO修改为HOOK_PDO;在PHP源码级别自定一个类的名称为PDO,继承HOOK_PDO类,在自定的PDO类里实现读取操作应用的用户,通过SQL注释的方式在原SQL中加入用户信息,将增加注释后SQL发送给数据库审计与防护系统;数据库审计与防护系统解析带注释的SQL,记录用户和SQL关联信息;数据库审计与防护系统根据用户和SQL关联信息访问数据库并返回数据给PHP应用程序。

这样的方法,在原有的PHP应用服务器部署定制PDO扩展的PHP便在应用中配置应用获取用户信息的实现类名称及方法名称;PDO驱动收到SQL时,通过读取类名称和方法名,调用方法获取用户信息,将用户信息以注释的形式与SQL进行绑定;PDO驱动调用原生的PDO驱动,将绑定有用户信息的SQL传给原生PDO驱动;数据库审计与防护系统收到SQL信息后,从SQL信息中解析出用户信息;数据库审计与防护系统依据解析出的SQL和用户信息以及策略信息,将用户访问行为和数据库访问行为关联,进行基于用户的访问控制。这样,在每台应用服务器重新编译定制的PHP扩展PDO,利用定制的PDO扩展来获取用户信息,将用户信息和SQL两者关联起来后发送给中数据库审计与防护系统进行操作和访问溯源。在PHP应用源码不改变的情况下,更高效,更快捷的实现PHP应用访问和数据库访问关联,进行访问溯源和基于系统用户的访问控制。

以上仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

对于本领域技术人员而言,显然本申请不限于上述示范性实施例的细节,而且在不背离本申请的精神或基本特征的情况下,能够以其它的具体形式实现本申请。因此,无论从哪一点来看,均应将实施例看作是示范性的,而且是非限制性的,本申请的范围由所附权利要求而不是上述说明限定,因此旨在将落在权利要求的等同要件的含义和范围内的所有变化囊括在本申请内。不应将权利要求中的任何附图标记视为限制所涉及的权利要求。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号