关于如何防止PHP漏洞?

    添加时间:2013-7-2 点击量:

    踏入编程圈一年不到,之前写的文章一向放在小我博客上,今后我写的或收拾的好的教程必然到园子里分享,只是园子里PHPer如同不怎么活泼,同业多多交换。这是我之前收拾的一篇PHP漏洞文章!


    漏洞无非这么几类,XSS、sql注入、号令履行、上传漏洞、本地包含、长途包含、权限绕过、信息泄漏、cookie捏造、CSRF(跨站恳求)等。这些漏洞不仅仅是针对PHP说话的,本文只是简单介绍PHP如何有效防止这些漏洞。


    1.xss + sql注入(关于xss进击具体介绍)


    此中占大头的天然是XSS与SQL注入,对于框架类型或者有公共文件的,建议在公共文件中同一做一次XSS和SQL注入的过滤。用PHP写个过滤函数,可由如下所示:


    ¥_REQUEST = filter_xss(¥_REQUEST);


    ¥_GET = filter_xss(¥_GET);


    ¥_POST = filter_xss(¥_POST);


    ¥_COOKIE = filter_xss(¥_COOKIE);


    ¥_POST = filter_sql(¥_POST);


    ¥_GET = filter_sql(¥_GET);


    ¥_COOKIE = filter_sql(¥_COOKIE);


    ¥_REQUEST = filter_sql(¥_REQUEST);


    最简单的filter_xss函数是htmlspecialchars()


    最简单的filter_sql函数是mysql_real_escape_string()


    当然,谁都知道这种过滤filter_sql(具体防止sql注入)只能过滤字符型和搜刮型的注入,对于数字型是没有办法的,但也申明做了这层过滤后,只需在后面重视数字型的SQL语句就可以了,碰到了加intval过滤就可以了,这就变得轻易多了。


    2. 号令履行


    对于号令履行,可以从关键字入手,统共可分为3类


    (1) php代码履行 :eval等


    (2)shell号令履行:exec、passthru、system、shell_exec等


    (3) 文件处理惩罚:fwrite、fopen、mkdir等


    对于这几类须要重视其参数是否用户可控。


    3.上传漏洞


    对于上传漏洞,也是重点存眷的处所,要细心解析它的处理惩罚流程,针对上传的绕过体式格式是很多的,最保险的体式格式:在保存文件是采取文件名随机定名和后缀白体式格式。其次要重视的一点是上传文件的处所可能不止一处,不要有漏掉,可能会碰着如许的景象,忽然在某个目次里面包含了一个第三方的编辑器在里面。


    文件包含漏洞涉及的函数如include() 、include_once()、require()、require_once()、file_get_contents()等


    最常见的还是出鄙人载文件功能函数,例如download.php?file=../../../etc/passwd 这种类型中。


    4. 权限绕过


    权限绕过可分为两类吧


    (1)后台文件的未授权接见。后台的文件没有包含对session的验证,就轻易呈现如许的题目


    (2)未感化户隔离,例如mail.php?id=23显示了你的信件,那么换个ID, mail.php?id=24就查看到了别人的信件,编写代码是便利,把信件都存在一个数据表里,id同一编号,前端显现时只需按id取出即可,但未感化户隔离,剖断归属,轻易造成越权接见。


    如许的例子是很常见的,给某银行做评估是就经常发明这种漏洞。


    5. 信息泄漏


    信息泄漏算是斗劲低危的漏洞了,比如列目次这种就属于安排题目,而与代码审计无关了,而像暴路径、暴源码这种是须要防止的。曾经碰到如许的代码


    <?php if(empty(¥_GET[a])) {…} ?>


    概况上似乎没题目,可是当恳求变为 xx.php?a[]=1时,即参数变为数组的时辰,就会产生错误乃至路径泄漏,而用isset断定则不会,当然一个个防太麻烦,建议在设备文件中封闭错误提示,或者在公共文件中参加如下代码以封闭错误显示功能:


    <?php error_reporting(0);?>


    之前PHP点点通(phpddt.com)就有一篇文章:关于PHP防止漏洞策略 ,介绍了register_globals 的以及魔术引用Magic Quotes应用申明。


    注明:本文项目组内容摘自PHPCHINA



    无论对感情还是对生活,“只要甜不要苦”都是任性而孩子气的,因为我们也不完美,我们也会伤害人。正因为我们都不完美,也因为生活从不是事事如意,所以对这些“瑕疵”的收纳才让我们对生活、对他人的爱变得日益真实而具体。—— 汪冰《世界再亏欠你,也要敢于拥抱幸福》
    分享到: