当前位置:首页 > PHP教程 > php应用 > 列表

php非法字符过滤

发布:smiling 来源: PHP粉丝网  添加日期:2014-08-25 14:49:42 浏览: 评论:0 

1) 当需要把用户输入的内容,有可能包含单引号、双引号 、反斜线、空字元 NUL,到mysql的语句中执行时,应该把APACHE中的magic_quotes_gpc项设成On.

如果APACHE中的此项设成Off时,也可用php的函数addslashes()达到相同的目的,但这两种手段不能同时使用,否则会出现重复替换,出现错误.

样例PHP代码如下:

  1. <?php      
  2.     
  3. if (get_magic_quotes_gpc()) {      
  4.     
  5.     $content=$_POST["content"];      
  6.     
  7. else {      
  8.     
  9.     $content=addslashes($_POST["content"]);      
  10.     
  11. }      
  12.     
  13. ?> 

当然,如果APACHE中的magic_quotes_gpc项为On,但有时又不想转义某项的特殊字符,可以使用stripslashes()去掉其中的 \.

2) 过滤影响MSSQL正常运行的字符。

当需要把用户输入的内容,有可能包含单引号,到mssql的语句中执行时,应该把APACHE中的magic_quotes_sybase项设成On,此时magic_quotes_gpc项不再生效.

如果APACHE中的此项设成Off时,php中并没有合适的函数达到相同的目的,只能使用字符串替换函数来达到此目的.

样例,PHP代码:

  1. <?php 
  2. $content=str_replace("'","''"$_POST["content"]);      
  3. ?> 

现在10.218.17.53上的PHP既要访问mysql又要访问mssql,APACHE中的设置不能兼顾两种数据库,所以只对mysql做了相应设置.

2. 应对用户输入包含SQL语句的一个措施。

以下两种SQL写法都比较普遍,但安全程度是不同的,当用户提交的$id='1 and 1=2 union select ...'时第一种就会显示出不该显示的数据,而第二种就相对安全些.

SQL代码:

Select * FROM article Where articleid=$id     

Select * FROM article Where articleid='$id'

3. 防止用户输入的内容因包含html标签或javascript而影响页面的正常显示,可以用htmlspecialchars()过滤其中的 & " < >,PHP代码:

$content = htmlspecialchars($content);   

4. 当页面要显示的内容包含回车换行时,可以使用nl2br()来达到页面上换行的效果.

方法一.

  1. <?php 
  2. function chkstr($paravalue,$paratype//过滤非法字符 
  3.  if($paratype==1) 
  4.  { 
  5.   $inputstr=str_replace("'","''",$paravalue); 
  6.   } 
  7.  elseif($paratype==2) 
  8.  { 
  9.   $inputstr=str_replace("'","",$paravalue); 
  10.   }//开源代码phpfensi.com 
  11.  return $inputstr
  12. $user1=chkstr($_GET["user"],1); 
  13. $user2=chkstr($_GET["user"],2); 
  14. //$user=$_GET["user"]; 
  15. print "方式1-----------------<br>"
  16. print "$user1 <br>"
  17. print "方式2-----------------<br>"
  18. print "$user2 <br>"
  19. ?> 

方法二.

  1. <?php 
  2. //用法:qstr($str, get_magic_quotes_gpc()) 
  3. function qstr($string$magic_quotes=false, $tag=false) 
  4.   $tag_str = ''
  5.   if ($tag$tag_str = "'"
  6.   if (!$magic_quotes) { 
  7.     if (strnatcmp(PHP_VERSION, '4.3.0') >= 0) { 
  8.       return $tag_str.mysql_real_escape_string($string).$tag_str
  9.     } 
  10.     $string = str_replace("'""[url=file://\\]\\'[/url]" , str_replace('\\', '\\\\', str_replace("\0""[url=]\\\0[/url]"$string))); 
  11.     return  $tag_str.$string.$tag_str
  12.   } 
  13.   return $tag_str.str_replace('\\"''"'$string).$tag_str
  14. ?> 

Tags: php非法字符过滤

分享到: