找回密码
 开放注册

QQ登录

只需一步,快速开始

微信登录

微信扫码,快速开始

搜索
查看: 888|回复: 1

具体讲解怎么保护代码安全

[复制链接]

57

主题

25

回帖

150

牛毛

一级牛人

积分
150
QQ
发表于 2011-4-21 14:04:59 | 显示全部楼层 |阅读模式 来自 湖北省武汉市
我们主要是从两点出发,因为我们的获取的变量一般都是通过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

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

6

主题

18

回帖

38

牛毛

初生牛犊

积分
38
发表于 2011-4-21 14:05:48 | 显示全部楼层 来自 天津市
学习学习
您需要登录后才可以回帖 登录 | 开放注册

本版积分规则

帮助|Archiver|小黑屋|通信管理局专项备案号:[2008]238号|NB5社区 ( 皖ICP备08004151号;皖公网安备34010402700514号 )

GMT+8, 2025-4-25 13:42 , Processed in 0.138569 second(s), 39 queries .

Powered by Discuz! X3.5

快速回复 返回顶部 返回列表