我用PHP的strpos函数写了一个简单的防止注入的代码,希望大家帮我改错

$str="upadta,insert";if(strpos($_POST[✀user✀],$str)){echo✀内容非法✀;}
2024-12-13 21:07:04
推荐回答(1个)
回答1:

$str=array("update","insert");
foreach($str as $val){
    if(strpos($_POST["user"],$val)===true)
        die("非法内容!");
}
?>
//如果仅仅需要过滤以上两个关键字,用上边代码就乎让行咯,但防止注入不是你这样理解的,注入是指 根据表单值铅埋或者get数据 构造sql 语句进行危害,比如
$sql="select * from user where id='".$_POST["user"]."'";
如果传来的$_POST["user"]是 a' and 1=1,上边的语句就变成咯
select 槐顷蚂* from user where id='a' and 1=1';
这只是一个简单的举例,实际情况要复杂得多,因此必须对数据进行过滤。我给你一个我自己的过滤函数
function getpost($arr){
 if (get_magic_quotes_gpc()){
   $arr=is_array($arr)?array_map('stripslashes',$arr):stripslashes($arr);
 }
 if(is_array($arr)){
  foreach($arr as $key=>$val){
   $arr[$key]=htmlspecialchars($val,ENT_QUOTES);//html实体转换
   $arr[$key]=mysql_real_escape_string($arr[$key]);//防注入替换   
  }
 }else{
   $arr=htmlspecialchars($arr,ENT_QUOTES);//html实体转换
   $arr=mysql_real_escape_string($arr);//防注入替换   
 }
 return $arr;
}
?>