zl程序教程

您现在的位置是:首页 >  后端

当前栏目

discuz的php防止sql注入函数

PHP注入SQL 函数 防止 discuz
2023-06-13 09:14:26 时间
最近在做一个主题投票网站,客户懂一些程序方面的东西。有特别要求需要过滤一些字符防止sql注入。本来这方面就没有特别的研究过。呵呵,又发扬了一回拿来主义。把discuz论坛的sql防注入函数取了来!
复制代码代码如下:

$magic_quotes_gpc=get_magic_quotes_gpc();
@extract(daddslashes($_COOKIE));
@extract(daddslashes($_POST));
@extract(daddslashes($_GET));
if(!$magic_quotes_gpc){
$_FILES=daddslashes($_FILES);
}


functiondaddslashes($string,$force=0){
if(!$GLOBALS["magic_quotes_gpc"]||$force){
if(is_array($string)){
foreach($stringas$key=>$val){
$string[$key]=daddslashes($val,$force);
}
}else{
$string=addslashes($string);
}
}
return$string;
}

大家可以增强下面的代码加以保护服务器的安全,PHP防止SQL注入安全函数十分重要!
复制代码代码如下:

/*
函数名称:inject_check()
函数作用:检测提交的值是不是含有SQL注射的字符,防止注射,保护服务器安全
参  数:$sql_str:提交的变量
返回值:返回检测结果,tureorfalse
*/
functioninject_check($sql_str){
returneregi("select|insert|and|or|update|delete|\"|\/\*|\*|\.\.\/|\.\/|union|into|load_file|outfile",$sql_str);//进行过滤
}

/*
函数名称:verify_id()
函数作用:校验提交的ID类值是否合法
参  数:$id:提交的ID值
返回值:返回处理后的ID
*/
functionverify_id($id=null){
if(!$id){exit("没有提交参数!");}//是否为空判断
elseif(inject_check($id)){exit("提交的参数非法!");}//注射判断
elseif(!is_numeric($id)){exit("提交的参数非法!");}//数字判断
$id=intval($id);//整型化

return$id;
}

/*
函数名称:str_check()
函数作用:对提交的字符串进行过滤
参  数:$var:要处理的字符串
返回值:返回过滤后的字符串
*/
functionstr_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:返回过滤后的内容
*/
functionpost_check($post){
if(!get_magic_quotes_gpc()){//判断magic_quotes_gpc是否为打开
$post=addslashes($post);//进行magic_quotes_gpc没有打开的情况对提交数据的过滤
}
$post=str_replace("_","\_",$post);//把"_"过滤掉
$post=str_replace("%","\%",$post);//把"%"过滤掉
$post=nl2br($post);//回车转换
$post=htmlspecialchars($post);//html标记转换

return$post;
}