PHP防SQL注入漏洞过滤函数
PHP #sql注入 #函数2012-04-19 21:11
PHP整站防SQL注入程序,需要在公共文件中require_once本文件。
<?php
//PHP整站防注入程序,需要在公共文件中require_once本文件
//判断magic_quotes_gpc状态
if (@get_magic_quotes_gpc()) {
$_GET = sec($_GET);
$_POST = sec($_POST);
$_COOKIE = sec($_COOKIE);
$_FILES = sec($_FILES);
}
$_SERVER = sec($_SERVER);
function sec(&$array) {
//如果是数组,遍历数组,递归调用
if (is_array($array)) {
foreach ($array as $k => $v) {
$array[$k] = sec($v);
}
} else if (is_string($array)) {
//使用addslashes函数来处理
$array = addslashes($array);
} else if (is_numeric($array)) {
$array = intval($array);
}
return $array;
}
//整型过滤函数
function num_check($id) {
if (!$id) {
die('参数不能为空!');
}//是否为空的判断
else if (inject_check($id)) {
die('非法参数');
}//注入判断
else if (!is_numetic($id)) {
die('非法参数');
}
//数字判断
$id = intval($id);
//整型化
return $id;
}
//字符过滤函数
function str_check($str) {
if (inject_check($str)) {
die('非法参数');
}
//注入判断
$str = htmlspecialchars($str);
//转换html
return $str;
}
function search_check($str) {
$str = str_replace("_", "\_", $str);
//把"_"过滤掉
$str = str_replace("%", "\%", $str);
//把"%"过滤掉
$str = htmlspecialchars($str);
//转换html
return $str;
}
//表单过滤函数
function post_check($str, $min, $max) {
if (isset($min) && strlen($str) < $min) {
die('最少$min字节');
} else if (isset($max) && strlen($str) > $max) {
die('最多$max字节');
}
return stripslashes_array($str);
}
//防注入函数
function inject_check($sql_str) {
return eregi('select|inert|update|delete|'|\/\*|\*|\.\.\/|\.\/|UNION|into|load_file|outfile', $sql_str);
// yige.org 进行过滤,防注入
}
function stripslashes_array(&$array) {
if (is_array($array)) {
foreach ($array as $k => $v) {
$array[$k] = stripslashes_array($v);
}
} else if (is_string($array)) {
$array = stripslashes($array);
}
return $array;
}
?>相关文章
- php open_basedir用法 安全设置 2012/04/19
- PHP开发安全规则 2012/04/18
- PHP的可变变量名 2012/04/18
- php的闭合标签要不要写 2012/04/15
- PHP函数strrev()函数的用法 2012/04/15
- PHP 检测是否手机浏览器的函数 2012/04/15
- PHPExcel常用方法 2012/04/15
- PHP程序员使用MySQL常犯的错误 2012/04/15
- php实现多进程 2012/04/15
- php的异步请求操作 2012/04/15