background image

关于

 

     PHP

 

     的漏洞以及如何防止

 

     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.上传漏洞

对于上传漏洞,也是重点关注的地方,要仔细分析它的处理流程,针对上

传的绕过方式是很多的,最保险的方式:在保存文件是采用文件名随机命名
和后缀白名单方式。其次要注意的一点是上传文件的地方可能不止一处,不要