1引言
PHP因其功能强大、入门简单、代码执行效率高等优点,成为了Web应用开发的流行语言。由于使用广泛,所以利用PHP安全漏洞对Web网站进行的攻击也越来越多,这给Web应用的安全带来了严重威胁。
对网站的安全负有直接责任的主要有两类人员:一类是网站开发人员;一类是网站管理人员。本文分别从网站开发和网站管理的角度,对PHP安全漏洞的防范进行了较为全面的总结、研究。
2PHP网站开发过程中产生的安全漏洞及其防范
从网站开发的角度出发,研究在程序的开发过程中,如何避免PHP安全漏洞的产生,从而开发出较为安全的PHP网站。
对以往大量攻击案例的研究表明,PHP安全漏洞的产生原因主要是没有对用户的输入进行严格的验证和对系统的输出没有进行适当的转义。用户的输入永远是不可以盲目相信的,在没有进行验证前,都可以认为是被污染数据。系统的输出在没有适当转义前,也有可能带来较大的安全风险。
2.1未对用户输入进行严格验证产生安全漏洞及其防范
考虑一个系统的登录验证,此系统要求用注册时所填的邮箱和密码登录。一般情况下,只要输入正确即可登录,如果输入错误则不允许登录,这是通常的处理流程。其程序实现一般是,通过一个登录表单获取用户输入的邮箱和密码,然后传递给程序以构造一个SQL查询语句,例如:selectcount(*)fromuserswhereemail='myemail@163.com'andpassword='mypass',再将此SQL语句提交给后台数据库执行,若返回的记录数为0,则说明输入的邮箱信息或密码有误或用户根本没有注册,系统拒绝其登录,反之则为合法用户,允许其登录。这套验证流程对于一般的客户是十分奏效的,其若没有注册亦或没有输入正确的邮箱和密码都是不能登录系统的。但对于黑客来说,情况就不一样了。其完全可以精心设计一个字符串来代替合法邮箱地址从而绕过系统的验证,例如:若黑客输入的邮箱地址是“myemail'or1=1--”、密码是“myppass”,此时,SQL语句变为:selectcount(*)fromuserswhereemail='myemail'or1=1--'andpassword='mypass',此语句执行后所返回的记录数是users表的所有记录总数,并不为0,所以通过了系统的登录验证,系统允许其登录。这就是著名的SQL注入攻击。导致这个后果的原因是黑客精心构造了一个字符串用于代替合法邮箱地址且系统并未对用户输入的数据本身进行合法性检查。 |
核心期刊网(www.hexinqk.com)秉承“诚以为基,信以为本”的宗旨,为广大学者老师提供投稿辅导、写作指导、核心期刊推荐等服务。 核心期刊网专业期刊发表机构,为学术研究工作者解决北大核心、CSSCI核心、统计源核心、EI核心等投稿辅导咨询与写作指导的问题。 投稿辅导咨询电话:18915033935 投稿辅导客服QQ: 投稿辅导投稿邮箱:1003158336@qq.com |