程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> 非法字符過濾

非法字符過濾

編輯:關於PHP編程

非法字符過濾本文章主要是講 php 過濾非法字符沒講asp過濾非法字符 的函數但是思想都一樣的.

) 過濾影響MySQL正常運行的字符。

當需要把用戶輸入的內容(有可能包含單引號、雙引號 、反斜線、空字元 NUL )代入到mysql的語句 中執行時,應該把APACHE中的magic_quotes_gpc項設成On。

如果APACHE中的此項設成Off時,也可用php的函數addslashes()達到相同的目的,但這兩種手段不能同時使用,否則會出現重復替換,出現錯誤。

樣例:

PHP代碼
<?php    
  
if (get_magic_quotes_gpc()) {    
  
    $content=$_POST["content"];    
  
} else {    
  
    $content=addslashes($_POST["content"]);    
  
}    
  
?>   

當然,如果APACHE中的magic_quotes_gpc項為On,但有時又不想轉義某項的特殊字符,可以使用stripslashes()去掉其中的 \

2) 過濾影響MSSQL正常運行的字符。

當需要把用戶輸入的內容(有可能包含單引號)代入到mssql的語句中執行時,應該把APACHE中的magic_quotes_sybase項設成On,此時magic_quotes_gpc項不再生效。

如果APACHE中的此項設成Off時,php中並沒有合適的函數達到相同的目的,只能使用字符串替換函數來達到此目的。

樣例:

PHP代碼
<?php    
  
$content=str_replace("'","''"$_POST["content"]);    
  
?>   

現在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()來達到頁面上換行的效果。
方法一.
<?
function chkstr($paravalue,$paratype) //過濾非法字符
{
 if($paratype==1)
 {
  $inputstr=str_replace("'","''",$paravalue);
  }
 elseif($paratype==2)
 {
  $inputstr=str_replace("'","",$paravalue);
  }
 return $inputstr;
}
$user1=chkstr($_GET["user"],1);
$user2=chkstr($_GET["user"],2);
//$user=$_GET["user"];
print "方式1-----------------<br>";
print "$user1 <br>";
print "方式2-----------------<br>";
print "$user2 <br>";
?>
方法二.


<?php
//用法:qstr($str, get_magic_quotes_gpc())
function qstr($string, $magic_quotes=false, $tag=false)
{
  $tag_str = '';
  if ($tag) $tag_str = "'";
  if (!$magic_quotes) {
    if (strnatcmp(PHP_VERSION, '4.3.0') >= 0) {
      return $tag_str.mysql_real_escape_string($string).$tag_str;
    }
    $string = str_replace("'", "[url=file://\\]\\'[/url]" , str_replace('\\', '\\\\', str_replace("\0", "[url=]\\\0[/url]", $string)));
    return  $tag_str.$string.$tag_str;
  }
  return $tag_str.str_replace('\\"', '"', $string).$tag_str;
}
?>

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved