Board logo

标题: 2个简单的php防注射代码 [打印本页]

作者: ttmax     时间: 2006-8-14 11:38 PM     标题: 2个简单的php防注射代码

RT,看PHP有一些时间了,要是了解ASP的就会觉得PHP和它差不多.ASP大名鼎鼎的安全问题让很多人头疼,PHP虽然相对安全,但是仍然有................总结了一些.觉得可以防止一般注射了,分享给大家
injection.php

CODE:
[复制代码到粘贴板]
<?
/*inject check plus
函数: inject_check verify_id str_check
作用:防止过滤注入
*/
function inject_check($sql_str)
{
        return eregi('seclet|insert|update|delete|\'|\/\*|\.\.\/|\.\/|union|load_file|outfile',$sql_str);
        //过滤
}
function verify_id($id=null)
{
        if (!$id) { exit('没有提交参数!');}//判断是否为空
        elseif (inject_($id) { exit('表这样嘛,我好怕怕');}
        //注射判断
        $id = intval($id); //整型化
        return $id
}
        function str_check($str)
        {
                if (!get_magic_quotes_gpc())//判断get_magic_quotes_gpc是否打开
                {
                        $str=addslashes($str);//过滤
                }
                        $str_replace("_","\_",$str);//过滤_
                        $str_replace("%","\%",$str);//过滤%
                        return $str
                }
if (inject_check($_get['id']))
{ exit('表这样嘛,我好怕怕');
}
else
{
        $id= verify_id($_get['id']);
        //对$id过滤
        echo '表提交非法数据';
}
?>

作者: ttmax     时间: 2006-8-14 11:39 PM



CODE:
[复制代码到粘贴板]
简述:/*************************
说明:
判断传递的变量中是否含有非法字符
如$_POST、$_GET
功能:
防注入
**************************/

<?php

//要过滤的非法字符
$ArrFiltrate=array("'",";","union");
//出错后要跳转的url,不填则默认前一页
$StrGoUrl="";
//是否存在数组中的值
function FunStringExist($StrFiltrate,$ArrFiltrate){
foreach ($ArrFiltrate as $key=>$value){
if (eregi($value,$StrFiltrate)){
  return true;
}
}
return false;
}

//合并$_POST 和 $_GET
if(function_exists(array_merge)){
$ArrPostAndGet=array_merge($HTTP_POST_VARS,$HTTP_GET_VARS);
}else{
foreach($HTTP_POST_VARS as $key=>$value){
  $ArrPostAndGet[]=$value;
}
foreach($HTTP_GET_VARS as $key=>$value){
  $ArrPostAndGet[]=$value;
}
}

//验证开始
foreach($ArrPostAndGet as $key=>$value){
if (FunStringExist($value,$ArrFiltrate)){
  echo "<script language=\"javascript\">alert(\"非法字符\");</script>";
  if (empty($StrGoUrl)){
  echo "<script language=\"javascript\">history.go(-1);</script>";
  }else{
  echo "<script language=\"javascript\">window.location=\"".$StrGoUrl."\";</script>";
  }
  exit;
}
}
?>

作者: ttmax     时间: 2006-8-14 11:44 PM

申请精华
作者: ttmax     时间: 2006-8-15 05:18 PM

申请精华!
作者: conanwchen     时间: 2006-8-18 03:47 PM

不错的东西
作者: laifuer     时间: 2006-8-19 12:01 AM

强悍,支持
作者: 冰雪黑鹰     时间: 2006-8-25 03:37 PM

过滤不全
可以把字符串转换编码提交。
例如%....
作者: wbklzh     时间: 2006-8-26 08:43 AM

谢谢分享
作者: 王飞强     时间: 2006-9-12 03:26 PM

谢谢分享了




欢迎光临 梦游时光互联 (http://web.meyu.net./) Powered by Discuz! 4.0.0