background image

    }  
  }  
  if($checkfind==true){ unset($checkfind); }   
  else{ die("无效引用页!"); }   

}   

 
    这样就可以很好地解决问题了。   

 
    小提示:有此问题的函数还有:require(),require_once(),include_once(),readfile()等,
在编写的时候也要注意。   

 
    未对输入变量进行过滤   

 
    1.漏洞原因:   

 
    这个漏洞早在 ASP 中出现过,当时造成的注入漏洞不计其数。但由于 PHP 在当时的影
响力较小,所以没有太多的人能够注意这点。对于 

 

PHP 来说,这个漏洞的影响性比 ASP 更大,因为有比较多的 PHP 脚本使用到文本型数据库。
当然也存在 SQL 语句的注入问题。举个比较经典的 

 
例子,首先是数据库的:   

 

$id=$_GET["id"];  

 

$query="SELECT * FROM my_table where id='".$id."'"; //很经典的 SQL 注入漏洞   

$result=mysql_query($query);   

 
    这里很明显我们可以用注入来获得数据库的其它内容了。这里就不再详细叙述,和 ASP
注入一样的,大家可以看看以前的黑防。然后 

 
我们看文本数据库的问题:   

 

$text1=$_POST["text1"];  

$text2=$_POST["text2"];  

$text3=$_POST["text3"];  

 

$fd=fopen("test.php","a");  

fwrite($fd,"\r\n$text1&line;$text2&line;$text3");  

fclose($fd);   

 
    文本的漏洞可以说是更加严重。倘若我们的提交的变量中插入一段很小的 PHP 代码,
就可以另这个文本数据库 test.php 变成 PHP 后门。