基于PHP安全漏洞的Web攻击防范研究

时间:2022-03-09 07:38:05

基于PHP安全漏洞的Web攻击防范研究

【 摘 要 】 文章以PHP语言为例对跨站脚本漏洞、文件上传漏洞的常见攻击进行了较为详细的分析并给出了相应的防范措施,以此为基础,总结出了Web应用程序安全漏洞产生的一般原因和开发安全Web应用的一些建议。

【 关键词 】 Web漏洞;Web攻击;Web安全;PHP安全

1 引言

由于PHP语言是目前开发各种Web应用程序的首选语言之一。文章就以PHP语言为例,通过对跨站脚本漏洞攻击和文件上传漏洞攻击及其防范措施进行较为详细的阐述,以此总结出在开发Web应用程序时,开发人员需要注意的一些问题及其采取的措施。

2 常见Web应用程序安全漏洞攻击实例分析及其防范措施

基于PHP技术开发的Web应用程序主要存在如下一些针对安全漏洞方面的攻击:命令注入攻击、eval注入攻击、客户端脚本攻击、跨站脚本攻击、SQL注入攻击、跨站请求伪造攻击、session会话劫持攻击、session固定攻击、http响应拆分攻击、文件上传漏洞攻击、目录穿越漏洞攻击、远程文件包含攻击、动态函数注入攻击、url攻击、欺骗表单提交攻击、http请求欺骗攻击等,限于篇幅,下面选择两个具有代表性的常见安全漏洞攻击来做详细分析。

2.1 跨站脚本攻击

跨站脚本XSS(Cross Site Script)漏洞攻击是指攻击者向Web页面里插入恶意html代码,当用户浏览该页面时,插入其中的恶意html代码被执行,从而达到特殊目的。

(1)跨站脚本攻击实例分析

针对跨站脚本漏洞进行的攻击方式多种多样,本文仅举一例。

假设某BBS论坛有一个发帖页面,如图1所示。

其采用了表单方法以帮助提交数据,表单的主要html代码如下:

从上面的代码可以看出,程序对于$Title及$Content的值给予了充分的信任,但这种信任是毫无根据的。试想,若Title和Content这两者其中之一的内容如下所示:

以上输入相当于在网页源程序中加入了Javascript代码,可以将登录用户的cookies发送到http://,然后由hook.php利用$_GET['cookies']变量就可以得到所有登录用户的cookies了。

(2)上述跨站脚本攻击之防范对策

以上漏洞主要是未对输出到浏览器的数据进行转义造成的,为了避免上述情况的发生,可以采用如下的方式显示已发表的帖子:

通过函数htmlentities()将输入中可能包含的html标签转换成了html实体(即编码形式),从而避免了上述攻击的发生。

2.2 文件上传漏洞攻击

由于文件上传功能的实现代码没有严格限制用户上传的文件类型,导致攻击者可以向通过Web访问的目录上传任意PHP文件,并能够将这些文件传递给PHP解释器,这样就使得攻击者可以在远程服务器上执行任意的PHP脚本,这就是所谓的文件上传漏洞攻击(File Upload Attack)。

(1) 文件上传漏洞攻击实例分析

如图2所示,是一个文件上传界面。

其表单的html代码如下:

如果实现文件上传功能的PHP代码为:

上述PHP代码虽能实现文件的上传,但这只是对中规中矩的用户来说的,如果碰到恶意攻击者,问题就不一样了。因为上述PHP代码未对上传的文件类型进行检查,导致用户可以上传PHP文件,所以存在着明显的漏洞。

(2) 文件上传漏洞攻击防范措施

为了避免上述文件上传漏洞的发生,可以采取如下防范措施,步骤如下:

1)对上传文件的类型进行检查,比如我们需要用户上传的文件是jpeg图片格式,则可以增加如下代码检查上传的文件的类型是否是jpeg图片格式:

2)由于PHP是在文件系统的临时文件区保存上传文件的,使用函数is_uploaded_file()可以判断临时文件区的文件是否是一个上传的文件,这样可以确保恶意的用户无法欺骗脚本去访问本不能访问的文件,代码如下:

3)最后可以用函数filesize()来校验文件的大小。

通过增加以上3个步骤,文件上传漏洞攻击发生的可能性大大降低了,最终的文件上传代码如下:

3 结束语

以上以PHP语言为例对两个常见Web应用程序安全漏洞的攻击及其防范对策做了较为详细的分析。第一个安全漏洞攻击,即跨站脚本漏洞攻击,是通过对输出到浏览器的数据进行转义来进行防范的。第二个安全漏洞攻击,即文件上传漏洞攻击是通过对输入的数据(此例中为上传的文件)进行一系列检查来进行防范的。在此不难看出,作为一个Web应用程序的开发人员,一定不能够相信用户的任何输入,对用户的任何输入都要进行过滤、检查,除此之外,系统的输出数据有时也会被黑客所利用,跨站脚本攻击就是一个很明显的例子。

综上所述,要确保开发出的Web应用较为安全,一定要遵循以下两个原则:第一,对于用户的任何输入,都要进行过滤,确保进入系统的数据是干净无污染的数据;第二,对于系统的输出,要进行转义,确保黑客无法利用输出的数据推断系统实现细节并进行攻击。

参考文献

[1] 曾利军,罗庆云.网络应用程序开发的安全技术研究.网络安全技术与应用.2005.

[2] 刘靖. 浅析Web应用程序安全规划.科技信息(教学科研).2007.

[3] 刘鹏,张玉清.PHP常见安全漏洞攻防研究.信息网络安全.2011.

[4] 孙军军,赵明清.企业信息安全现状与发展趋势分析.信息网络安全,2012年第10期(总第142期)第90页.

[5] 周国勇,陈磊.信息系统安全检查工作体系设计研究.信息网络安全,2012年第8期(总第140期)第167页.

作者简介:

程茂华(1977-),男,安徽黄山人,硕士研究生,助教;研究方向:网络与信息安全。

上一篇:双驴头抽油机减速器失效原因分析 下一篇:中职学校开展太极拳运动项目教学的意义与途径