关于如何防止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
迎接转载! 原文地址: http://www.phpddt.com/php/prevent-php-bugs.html ,转载请注明地址,感谢!
迎接大师在博客园或我的博客给我留言,提出批驳,新手很是感激感动,感谢!无论对感情还是对生活,“只要甜不要苦”都是任性而孩子气的,因为我们也不完美,我们也会伤害人。正因为我们都不完美,也因为生活从不是事事如意,所以对这些“瑕疵”的收纳才让我们对生活、对他人的爱变得日益真实而具体。—— 汪冰《世界再亏欠你,也要敢于拥抱幸福》
踏入编程圈一年不到,之前写的文章一向放在小我博客上,今后我写的或收拾的好的教程必然到园子里分享,只是园子里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