当前位置: 首页 > 图文教程 > 网络编程 > PHP > 保护代码安全,PHP如何进行注入

PHP
PHP新手总结的PHP基础知识
php实现gb2312和unicode间编码转换
用php语言实现数据库连接详细代码介绍
详细解析 PHP 向 MySQL 发送数据过程
利用PHP V5开发多任务应用程序
详细讲解PHP中缓存技术的应用
php escapeshellcmd多字节编码漏洞
《PHP设计模式介绍》导言
《PHP设计模式介绍》第一章 编程惯用法
《PHP设计模式介绍》第二章 值对象模式
《PHP设计模式介绍》第三章 工厂模式
《PHP设计模式介绍》第四章 单件模式
《PHP设计模式介绍》第五章 注册模式
《PHP设计模式介绍》第六章 伪对象模式
《PHP设计模式介绍》第七章 策略模式
《PHP设计模式介绍》第八章 迭代器模式
《PHP设计模式介绍》第九章 观测模式
《PHP设计模式介绍》第十章 规范模式
《PHP设计模式介绍》第十一章 代理模式
《PHP设计模式介绍》第十二章 装饰器模式

保护代码安全,PHP如何进行注入


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-08-14   浏览: 186 ::
收藏到网摘: n/a

我们主要是从两点出发,因为我们的获取的变量一般都是通过GET或者POST方式提交过来的,那么我们只要对GET和POST过来的变量进行过滤,那么就能够达到防止注入的效果。而且我们的PHP真是非常好,已经内置了$_GET和$_POST两个数组来存储所有变量,我们要做的工作就是过滤每个变量就可以了。

下面看具体的代码:
/*
PHP开发资源网 = 全球最大的PHP中文社群 = PHPer的网上家园
*/

/* Author: heiyeluren */
/* 过滤所有GET过来变量 */
foreach ($_GET as $get_key=%26gt;$get_var)
{
if (is_numeric($get_var))
if (is_numeric($get_var)) {
$get[strtolower($get_key)] = get_int($get_var);
} else {
$get[strtolower($get_key)] = get_str($get_var);
}
}

/* 过滤所有POST过来的变量 */
foreach ($_POST as $post_key=%26gt;$post_var)
{
if (is_numeric($post_var)) {
$post[strtolower($post_key)] = get_int($post_var);
} else {
$post[strtolower($post_key)] = get_str($post_var);
}
}

/* 过滤函数 */
//整型过滤函数
function get_int($number)
{
return intval($number);
}
//字符串型过滤函数
function get_str($string)
{
if (!get_magic_quotes_gpc()) {
return addslashes($string);
}
return $string;
}

那么我们把以上代码放到一个公共的文件里,比如security.inc.php里面,每个文件里都include一下这个文件,那么就能够给任何一个程序进行提交的所有变量进行过滤了,就达到了我们一劳永逸的效果。

另外,还有一些其他的过滤方法,比如采用我以前使用的关键字过滤的方法:http://dev.csdn.net/article/71/71475.shtm
还可以参考三尺寒冰写的方法:http://www.fanghei.com/html/2005-06/20050607114008.htm

方法是不同的,但是核心就是为了我们的代码更加安全。