Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2780929
  • 博文数量: 77
  • 博客积分: 10204
  • 博客等级: 上将
  • 技术积分: 5035
  • 用 户 组: 普通用户
  • 注册时间: 2006-03-05 22:13
文章分类
文章存档

2013年(1)

2010年(1)

2009年(17)

2008年(58)

我的朋友

分类:

2008-04-16 14:57:59

php sql 过滤
一般性的防注入,只要使用php的 addslashes 函数就可以了。
以下是一段copy来的代码:

$_POST = sql_injection($_POST);
$_GET = sql_injection($_GET);

function sql_injection($content)
{
if (!get_magic_quotes_gpc()) {
if (is_array($content)) {
foreach ($content as $key=>$value) {
$content[$key] = addslashes($value);
}
} else {
addslashes($content);
}
}
return $content;
}

做系统的话,可以用下面的代码,也是copy来的。接下来做系统的时候,如果有问题,或者有修改的地方,我会补充说明:

/*
函数名称:inject_check()
函数作用:检测提交的值是不是含有SQL注射的字符,防止注射,保护服务器安全
参  数:$sql_str: 提交的变量
返 回 值:返回检测结果,ture or false
*/
function inject_check($sql_str) {
return eregi('select|insert|update|delete|'|/*|*|../|./|union|into|load_file|outfile', $sql_str); // 进行过滤
}
   
/*
函数名称:verify_id()
函数作用:校验提交的ID类值是否合法
参  数:$id: 提交的ID值
返 回 值:返回处理后的ID
*/
function verify_id($id=null) {
if (!$id) { exit('
没有提交参数!'); } // 是否为空判断
elseif (inject_check($id)) { exit('
提交的参数非法!'); } // 注射判断
elseif (!is_numeric($id)) { exit('
提交的参数非法!'); } // 数字判断
$id = intval($id); // 整型化
   
return $id;
}
   
/*
函数名称:str_check()
函数作用:对提交的字符串进行过滤
参  数:$var: 要处理的字符串
返 回 值:返回过滤后的字符串
*/
function str_check( $str ) {
if (!get_magic_quotes_gpc()) { // 判断magic_quotes_gpc是否打开
    $str = addslashes($str); // 进行过滤
}
$str = str_replace("_", "_", $str); // 把 '
_'过滤掉
$str = str_replace("%", "%", $str); // 把 '
%'过滤掉
   
return $str;
}
   
/*
函数名称:post_check()
函数作用:对提交的编辑内容进行处理
参  数:$post: 要提交的内容
返 回 值:$post: 返回过滤后的内容
*/
function post_check($post) {
if (!get_magic_quotes_gpc()) { // 判断magic_quotes_gpc是否为打开
    $post = addslashes($post); // 进行magic_quotes_gpc没有打开的情况对提交数据的过滤
}
$post = str_replace("_", "_", $post); // 把 '
_'过滤掉
$post = str_replace("%", "%", $post); // 把 '
%

阅读(2241) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~