当前位置:首页 >  站长 >  建站经验 >  正文

如何从网站开发角度提高php安全漏洞的防范

 2014-03-21 10:30  来源: A5专栏   我来投稿 撤稿纠错

  【推荐】海外独服/站群服务器/高防

目前PHP因其功能强大、入门简单、代码执行效率高等优点,成为了Web应用开发的流行语言。由于使用广泛,所以利用PHP安全漏洞对Web网站进行的攻击也越来越多,这给Web应用的安全带来了严重威胁。对网站的安全负有直接责任的主要有两类人员:一类是网站开发人员;一类是网站管理人员。本文笔者就从网站开发的角度,对PHP安全漏洞的防范进行了较为全面的总结、研究。

对以往大量攻击案例的研究表明,PHP安全漏洞的产生原因主要是没有对用户的输人进行严格的验证和对系统的输出没有进行适当的转义。用户的输入永远是不可以盲目相信的,在没有进行验证前,都可以认为是被污染数据。系统的愉出在没有适当转义前,也有可能带来较大的安全风险。

1、未对用户输入进行严格验证产生安全漏洞及其防范

考虑一个系统的登录验证,此系统要求用注册时所填的邮箱和密码登录。一般情况下,只要输入正确即可登录,如果输人错误则不允许登录,这是通常的处理流程。其程序实现一般是,通过一个登录表单获取用户输入的邮箱和密码,然后传递给程序以构造一个SQL查询语句,例如:select count(*)from users where email='myemail@163.com'and password='mypass',再将此SQL语句提交给后台数据库执行,若返回的记录数为0,则说明输人的邮箱信息或密码有误或用户根本没有注册,系统拒绝其登录,反之则为合法用户,允许其登录。这套验证流程对于一般的客户是十分奏效的,其若没有注册亦或没有袖人正确的邮箱和密码都是不能登录系统的。但对于黑客来说,情况就不一样了。其完全可以精心设计一个字符串来代替合法邮箱地址从而绕过系统的验证,例如:若黑客输人的邮箱地址是“myemail"orI=I--"、密码是"myppass",此时SQL语句变为select count(*)from users wherer email='myemail' or I=I--" and password='mypass' ,此语句执行后所返回的记录数是users表的所有记录总数,并不为0,所以通过了系统的登录验证,系统允许其登录。这就是著名的SQL注入攻击。导致这个后果的原因是黑客精心构造了一个字符串用于代替合法邮箱地址且系统并未对用户输入的数据本身进行合法性检查。

为了对上述PHP安全漏洞进行防范,我们可以对用户的输人进行合法性验证。此处要求入的是邮箱地址,为了对用户输入的数据本身进行合法性检查,我们可以用正则表达式对用户输人的邮箱地址进行验证,看是否符合正确的邮箱格式,这样就可以大大增加黑客设计特殊字符串的难度,在一定程度上防止SQL注人漏洞的产生。

在任何悄况下,如果对用户的输人均进行严格的验证,当然,验证方法根据不同情况而有所不同,并不局限于正则表达式,这就可以在很大程度上对PHP安全漏洞进行防范。

2、未对系统的输出进行适当转义产生安全漏洞及其防范

未对系统的输出进行适当转义也会产生安全漏洞,跨站脚本漏洞就是一个很著名的例子。假设有一个可以发表评论的系统,其采用表单的形式进行数据提交。对于一般用户,这不会有什么太大间题,但是对于黑客,问题就来了。因为黑客并不是真的想发表什么评论,其有可能是想盗取其他登录用户的cookies。为了盗取其他录用户的cookies, 黑可以将javascript代码作为评论内容进行提交。

如果在输出前对黑客所提交的内容不做任何转义的话,那么lavascript代码将被其他用户的浏览器所执行,从而将浏览评论的其他登录用户的cookies信息发送到黑客手上。为了防范上述跨站脚本漏洞攻击,我们所要采取的措施很简单:在将评论内容输出到客户端浏览器之前,利用htmlentities()函数对输出内容进行转义。此函数可以将输出内容当中可能包含的html标签转换成html实体,从而使得黑客输入的Javascript代码不被执行。

任何情况下,对于系统的输出都应该进行适当的转义(转义方法根据不同情况而有所不同,并不局限于htmlentities()函数),这样才不会让黑客有机可乘。

声明:本文由郑州批发市场: 原创投稿,尊重他人成果,转载请注明出处!

申请创业报道,分享创业好点子。点击此处,共同探讨创业新机遇!

相关文章

  • PHP5停更,中企动力为你保驾护航

    这两天你们都心慌慌,为什么?因为市面上的PHP5将于年底停止更新,六成用户将面临安全风险。笔者我只能说,这次绝对稳了!因为这些语言跟我们没关系,详细了解下中企的技术实力!

  • PHP开发者的Linux学习之路

    谈起一个高效动态网站的构建,那就不得不提到LAMP,即Linux操作系统、Apache网络服务器、Mysql数据库、Perl、PHP或Python编程语言等开源产品所组成的网站架构框架,其最大的优势是开放性强,安全性高,且成本低廉。因此,LAMP成为了国际流行的网站构建方案。而作为一名php开发人员

    标签:
    php开发工具
  • PHP二次开发discuz3.2最新体验

    康盛官方于6月4号发布了discuz3.2的正式版,因为这两天一直忙于一个项目,一直没来的及体验,现在抽时间总算是装上了,也体验一把。根据官方说明:Discuz!X3.2在继承和完善Discuz!X3.1的基础上,针对社区移动端进行了新的尝试。推出微信登录、微社区等功能。安全稳定的程序为站长提供更加

  • 使用CakePHP框架开发网站

    现如今成熟的PHP开发框架有很多种,YII,zendframwork,国内轻量型框架Thinkphp,还有开发效率很高的CakePHP。公司可以根据自己的需求选择合适的开发框架,在这里,小编以自己公司使用的开发框架CakePHP作为重点介绍,阐述它的优点。CakePHP的简要介绍:PHP框架已被

    标签:
    php开发工具
  • 漫谈社区PHP业务开发 提高效率缩短开发周期

    在当前这个互联网业务飞速发展时期,新的产品如雨后春笋般涌出,老产品线新业务也在不断突破和尝试。这就对快速开发迭代提出了更高的要求。一、基础运行环境针对新产品的开发,必须能够快速搭建一套LAMP架构。那么无外乎选择一个webserver,选择一个php版本,选择一

    标签:
    php开发工具

热门排行

信息推荐