PHP文件访问检测方法及装置转让专利

申请号 : CN202310095993.4

文献号 : CN116186699B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 杨钰卉姚纪卫姜向前

申请人 : 安芯网盾(北京)科技有限公司

摘要 :

本发明实施例涉及一种PHP文件访问检测方法及装置,所述方法包括步骤:获取PHP进程启动时的至少一个访问文件的函数;对所述至少一个访问文件的函数进行挂钩;在PHP进程的脚本执行时,获取当前PHP服务器文件的第一目录;当所述脚本中执行所述至少一个访问文件的函数时,根据所述至少一个访问文件的函数的挂钩获取所要访问文件的绝对路径;判断所要访问文件的绝对路径中是否包含第一目录,并根据判断结果判定所述脚本是否为涉及敏感文件访问的恶意访问请求。本发明实施例提供的技术方案,基于挂钩(HOOK)技术,可以实现在PHP进程的执行过程中,实时监控并检测敏感文件访问,检测方法更简单,且对PHP服务器的性能影响更小。

权利要求 :

1.一种PHP文件访问检测方法,其特征在于,包括步骤:获取PHP进程启动时的至少一个访问文件的函数;

对所述至少一个访问文件的函数进行挂钩;

在PHP进程的脚本执行时,获取当前PHP服务器文件的第一目录,所述第一目录包括待访问服务器文件的根目录,并存储在PHP的全局变量中;

当所述脚本中执行所述至少一个访问文件的函数时,根据所述至少一个访问文件的函数的挂钩获取所要访问文件的绝对路径;

判断所要访问文件的绝对路径中是否包含第一目录,并根据判断结果判定所述脚本是否为涉及敏感文件访问的恶意访问请求。

2.根据权利要求1所述的方法,其特征在于,所述访问文件的函数包括fopen、fwrite、readfile和file_get_contents。

3.根据权利要求2中所述的方法,其特征在于,判断所要访问文件的绝对路径中是否包含第一目录,并根据判断结果判定所述脚本是否为涉及敏感文件访问的恶意访问请求,包括:若所要访问文件的绝对路径中包括第一目录,则该脚本为正常访问请求;

若所要访问文件的绝对路径中不包括第一目录,则该脚本为涉及敏感文件访问的恶意访问请求。

4.根据权利要求1‑3中任意一项所述的方法,其特征在于,所述敏感文件包括记录主机或者用户信息的文件。

5.一种PHP文件访问检测装置,其特征在于,包括:函数获取模块,用于获取PHP进程启动时的至少一个访问文件的函数;

挂钩模块,用于对所述至少一个访问文件的函数进行挂钩;

第一目录获取模块,用于在PHP进程的脚本执行时,获取当前PHP服务器文件的第一目录,所述第一目录包括待访问服务器文件的根目录,并存储在PHP的全局变量中;

文件路径获取模块,用于当所述脚本中执行所述至少一个访问文件的函数时,根据所述至少一个访问文件的函数的挂钩获取所要访问文件的绝对路径;

检测模块,用于判断所要访问文件的绝对路径中是否包含第一目录,并根据判断结果判定所述脚本是否为涉及敏感文件访问的恶意访问请求。

6.根据权利要求5所述的装置,其特征在于,所述访问文件的函数包括fopen、fwrite、readfile和file_get_contents。

7.根据权利要求6中所述的装置,其特征在于,所述检测模块,判断所要访问文件的绝对路径中是否包含第一目录,并根据判断结果判定所述脚本是否为涉及敏感文件访问的恶意访问请求,包括:若所要访问文件的绝对路径中包括第一目录,则该脚本为正常访问请求;

若所要访问文件的绝对路径中不包括第一目录,则该脚本为涉及敏感文件访问的恶意访问请求。

8.根据权利要求5‑7中任意一项所述的装置,其特征在于,所述敏感文件包括记录主机或者用户信息的文件。

说明书 :

PHP文件访问检测方法及装置

技术领域

[0001] 本发明实施例涉及PHP文件访问检测技术领域,尤其涉及一种PHP文件访问检测方法及装置。

背景技术

[0002] 敏感文件是指计算机或者网站上的配置文件、备份文件等记录主机或用户信息等敏感信息的文件。如果这些文件被窃取或篡改,将会对用户造成极大的损失,所以需要对访问敏感文件的行为进行监控和检测。
[0003] 现有技术中多采用基于白名单防护的敏感文件访问控制机制,需要对应用程序和应用程序能够访问的敏感文件进行预先配置,等到应用程序访问文件时,需要检测配置项,判断应用程序是否具有该文件的访问权限。
[0004] 而基于白名单防护的敏感文件访问控制机制高度依赖人工配置,无法做到实时检测,且对于访问文件比较多的应用程序,配置起来更加繁琐,当有应用程序访问文件时,需要检索大量配置,对应用程序的性能影响较大。

发明内容

[0005] 基于现有技术的上述情况,本发明实施例的目的在于提供一种PHP文件访问检测方法及装置,基于挂钩(HOOK)技术,可以做到实时监控并检测敏感文件访问,检测方法更简单,且对PHP服务器的性能影响更小。
[0006] 为达到上述目的,根据本发明的一个方面,提供了一种PHP文件访问检测方法,包括步骤:
[0007] 获取PHP进程启动时的至少一个访问文件的函数;
[0008] 对所述至少一个访问文件的函数进行挂钩;
[0009] 在PHP进程的脚本执行时,获取当前PHP服务器文件的第一目录;
[0010] 当所述脚本中执行所述至少一个访问文件的函数时,根据所述至少一个访问文件的函数的挂钩获取所要访问文件的绝对路径;
[0011] 判断所要访问文件的绝对路径中是否包含第一目录,并根据判断结果判定所述脚本是否为涉及敏感文件访问的恶意访问请求。
[0012] 进一步的,所述访问文件的函数包括fopen、fwrite、readfile和file_get_contents。
[0013] 进一步的,所述第一目录包括待访问PHP服务器文件的根目录。
[0014] 进一步的,判断所要访问文件的绝对路径中是否包含第一目录,并根据判断结果判定所述脚本是否为涉及敏感文件访问的恶意访问请求,包括:
[0015] 若所要访问文件的绝对路径中包括第一目录,则该脚本为正常访问请求;
[0016] 若所要访问文件的绝对路径中不包括第一目录,则该脚本为涉及敏感文件访问的恶意访问请求。
[0017] 进一步的,所述敏感文件包括记录主机或者用户信息的文件。
[0018] 根据本发明的另一个方面,提供了一种PHP文件访问检测装置,包括:
[0019] 函数获取模块,用于获取PHP进程启动时的至少一个访问文件的函数;
[0020] 挂钩模块,用于对所述至少一个访问文件的函数进行挂钩;
[0021] 第一目录获取模块,用于在PHP进程的脚本执行时,获取当前文件的第一目录;
[0022] 文件路径获取模块,用于当所述脚本中执行所述至少一个访问文件的函数时,根据所述至少一个访问文件的函数的挂钩获取所要访问文件的绝对路径;
[0023] 检测模块,用于判断所要访问文件的绝对路径中是否包含第一目录,并根据判断结果判定所述脚本是否为涉及敏感文件访问的恶意访问请求。
[0024] 进一步的,所述访问文件的函数包括fopen、fwrite、readfile和file_get_contents。
[0025] 进一步的,所述第一目录包括待访问PHP服务器文件的根目录。
[0026] 进一步的,所述检测模块,判断所要访问文件的绝对路径中是否包含第一目录,并根据判断结果判定所述脚本是否为涉及敏感文件访问的恶意访问请求,包括:
[0027] 若所要访问文件的绝对路径中包括第一目录,则该脚本为正常访问请求;
[0028] 若所要访问文件的绝对路径中不包括第一目录,则该脚本为涉及敏感文件访问的恶意访问请求。
[0029] 进一步的,所述敏感文件包括记录主机或者用户信息的文件。
[0030] 综上所述,本发明实施例提供了一种PHP文件访问检测方法及装置,所述方法包括步骤:获取PHP进程启动时的至少一个访问文件的函数;对所述至少一个访问文件的函数进行挂钩;在PHP进程的脚本执行时,获取当前PHP服务器文件的第一目录;当所述脚本中执行所述至少一个访问文件的函数时,根据所述至少一个访问文件的函数的挂钩获取所要访问文件的绝对路径;判断所要访问文件的绝对路径中是否包含第一目录,并根据判断结果判定所述脚本是否为涉及敏感文件访问的恶意访问请求。本发明实施例提供的技术方案,基于挂钩(HOOK)技术,可以实现在PHP进程的执行过程中,实时监控并检测敏感文件访问,检测方法更简单,且对PHP服务器的性能影响更小。

附图说明

[0031] 图1是本发明实施例提供的PHP文件访问检测方法的流程图;
[0032] 图2是本发明实施例提供的PHP文件访问检测装置的构成框图;
[0033] 图3是本发明该实施例提供的电子设备的结构示意图。

具体实施方式

[0034] 为使本发明的目的、技术方案和优点更加清楚明了,下面结合具体实施方式并参照附图,对本发明进一步详细说明。应该理解,这些描述只是示例性的,而并非要限制本发明的范围。此外,在以下说明中,省略了对公知结构和技术的描述,以避免不必要地混淆本发明的概念。
[0035] 下面对结合附图对本发明实施例的技术方案进行详细说明。本发明的实施例,提供了一种PHP文件访问检测方法,图1中示出了本发明实施例提供的PHP文件访问检测方法的流程图,如图1所示,该方法包括如下步骤:
[0036] S202、获取PHP进程启动时的至少一个访问文件的函数。当PHP进程启动时,该步骤中,对PHP可能的访问敏感文件的函数例如fopen、fwrite、readfile、file_get_contents等函数进行挂钩(HOOK),等到用户执行PHP脚本,也就是PHP进程接收到请求后,如果有PHP脚本通过这些函数要访问敏感文件时,就可以获取到访问敏感文件的路径,如果要访问的敏感文件路径中不包含Document_Root的路径,则可以判定为该请求为恶意的访问敏感文件。
[0037] S204、对所述至少一个访问文件的函数进行挂钩。
[0038] S206、在PHP进程的脚本执行时,获取当前PHP服务器文件的第一目录。该第一目录例如为待访问服务器文件的根目录,该第一目录存储在PHP的全局变量里,通过全局变量即可获取当前PHP服务器文件的第一目录。本实施例中,根目录例如为Document_Root,Document_Root是服务器访问用户文件的根目录,所有用户可以通过web访问的PHP文件都会放到Document_Root目录下,所以当有恶意请求想访问一些敏感文件时,一般会通过路径遍历,也就是../,企图访问存储在Document_Root之外的文件。本发明实施例中,通过判断所要访问文件的绝对路径中是否包含根目录来对PHP脚本是否为涉及敏感文件访问的恶意访问请求进行判断。该方法无需进行人工配置以及大量检测,相对于现有技术的检测方法具有较高的实时性,对PHP服务器的性能影响也更小。
[0039] S208、当所述脚本中执行所述至少一个访问文件的函数时,根据所述至少一个访问文件的函数的挂钩获取所要访问文件的绝对路径。
[0040] S210、判断所要访问文件的绝对路径中是否包含第一目录,并根据判断结果判定所述脚本是否为涉及敏感文件访问的恶意访问请求。该步骤的判断包括:
[0041] 若所要访问文件的绝对路径中包括第一目录,则该脚本为正常访问请求;
[0042] 若所要访问文件的绝对路径中不包括第一目录,则该脚本为涉及敏感文件访问的恶意访问请求。
[0043] 本发明实施例中涉及的敏感文件是指例如/etc/passwd、/etc/hosts等记录主机或用户信息等敏感信息的文件,与敏感文件相区别的是用户可以正常访问的文件。
[0044] 本发明的实施例,还提供了一种PHP文件访问检测装置,图2中示出了该装置的构成框图,包括:
[0045] 函数获取模块201,用于获取PHP进程启动时的至少一个访问文件的函数;
[0046] 挂钩模块202,用于对所述至少一个访问文件的函数进行挂钩;
[0047] 第一目录获取模块203,用于在PHP进程的脚本执行时,获取当前文件的第一目录;
[0048] 文件路径获取模块204,用于当所述脚本中执行所述至少一个访问文件的函数时,根据所述至少一个访问文件的函数的挂钩获取所要访问文件的绝对路径;
[0049] 检测模块205,用于判断所要访问文件的绝对路径中是否包含第一目录,并根据判断结果判定所述脚本是否为涉及敏感文件访问的恶意访问请求。该检测模块205判断所要访问文件的绝对路径中是否包含第一目录,并根据判断结果判定所述脚本是否为涉及敏感文件访问的恶意访问请求,包括:
[0050] 若所要访问文件的绝对路径中包括第一目录,则该脚本为正常访问请求;
[0051] 若所要访问文件的绝对路径中不包括第一目录,则该脚本为涉及敏感文件访问的恶意访问请求。
[0052] 本发明该实施例提供的PHP文件访问检测装置中,各模块实现其功能的具体过程与本发明上述实施例提供的PHP文件访问检测方法中各步骤相同,在此将省略其重复描述。
[0053] 本发明的实施例中,还提供了一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的可执行指令,所述处理器执行所述程序时实现如本发明上述实施例中所述的方法。图3所示为本发明该实施例提供的电子设备的结构示意图。如图3所示,该电子设备包括:一个或多个处理器301和存储器302;以及存储在存储器302中的计算机可执行指令,可执行指令在被处理器301运行时使得处理器301执行如上述实施例的PHP文件访问检测方法。处理器301可以是中央处理单元(CPU)或者具有数据处理能力和/或指令执行能力的其他形式的处理单元,并且可以控制电子设备中的其他组件以执行期望的功能。存储器302可以包括一个或多个计算机程序产品,计算机程序产品可以包括各种形式的计算机可读存储介质,例如易失性存储器和/或非易失性存储器。易失性存储器例如可以包括随机存取存储器(RAM)和/或高速缓冲存储器(cache)等。非易失性存储器例如可以包括只读存储器(ROM)、硬盘、闪存等。在计算机可读存储介质上可以存储一个或多个计算机程序指令,处理器301可以运行程序指令,以实现上文的本发明实施例的PHP文件访问检测方法中的步骤以及/或者其他期望的功能。在一些实施例中,电子设备还可以包括:输入装置303和输出装置304,这些组件通过总线系统和/或其他形式的连接机构(图3中未示出)互连。例如,在该电子设备是单机设备时,该输入装置303可以是通信网络连接器,用于从外部的可移动设备接收所采集的输入信号。此外,该输入设备303还可以包括例如键盘、鼠标、麦克风等。该输出装置304可以向外部输出各种信息,例如可以包括例如显示器、扬声器、打印机、以及通信网络及其所连接的远程输出设备等。
[0054] 本发明的实施例中,还提供了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现如本发明上述实施例中所述的方法中的步骤。计算机可读存储介质可以采用一个或多个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以包括但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器((RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑盘只读存储器(CD‑ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。
[0055] 应当理解的是,本发明实施例中的处理器可以为中央处理单元(Central Processing Unit,CPU),该处理器还可以是其他通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现成可编程门阵列(Field Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
[0056] 综上所述,本发明实施例涉及一种PHP文件访问检测方法及装置,所述方法包括步骤:获取PHP进程启动时的至少一个访问文件的函数;对所述至少一个访问文件的函数进行挂钩;在PHP进程的脚本执行时,获取当前PHP服务器文件的第一目录;当所述脚本中执行所述至少一个访问文件的函数时,根据所述至少一个访问文件的函数的挂钩获取所要访问文件的绝对路径;判断所要访问文件的绝对路径中是否包含第一目录,并根据判断结果判定所述脚本是否为涉及敏感文件访问的恶意访问请求。本发明实施例提供的技术方案,基于挂钩(HOOK)技术,可以实现在PHP进程的执行过程中,实时监控并检测敏感文件访问,检测方法更简单,且对PHP服务器的性能影响更小。
[0057] 应当理解的是,以上任何实施例的讨论仅为示例性的,并非旨在暗示本发明的范围(包括权利要求)被限于这些例子;在本发明的思路下,以上实施例或者不同实施例中的技术特征之间也可以进行组合,步骤可以以任意顺序实现,并存在如上所述的本发明一个或多个实施例的不同方面的许多其它变化,为了简明它们没有在细节中提供。本发明的上述具体实施方式仅仅用于示例性说明或解释本发明的原理,而不构成对本发明的限制。因此,在不偏离本发明的精神和范围的情况下所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。此外,本发明所附权利要求旨在涵盖落入所附权利要求范围和边界、或者这种范围和边界的等同形式内的全部变化和修改例。