- //方法一
- //過濾',",sql語名
- addslashes();
- //方法二,去除所有html標籤
- strip_tags();
- //方法三過濾可能產生代碼
- function php_sava($str)
- {
- $farr = array(
- "/s+/",
- "/<(/?)(script|i?frame|style|html|body|title|link|meta|?|%)([^>]*?)>/isU",
- "/(<[^>]*)on[a-zA-Z]+s*=([^>]*>)/isU",
-
- );
- $tarr = array(
- " ",
- "<>", //如果要直接清除不安全的標籤,這裡可以留空
- "",
- );
- $str = preg_replace( $farr,$tarr,$str);
- return $str;
- }
- //php sql防注入代碼
- class sqlin
- {
- //dowith_sql($value)
- function dowith_sql($str)
- {
- $str = str_replace("and","",$str);
- $str = str_replace("execute","",$str);
- $str = str_replace("update","",$str);
- $str = str_replace("count","",$str);
- $str = str_replace("chr","",$str);
- $str = str_replace("mid","",$str);
- $str = str_replace("master","",$str);
- $str = str_replace("truncate","",$str);
- $str = str_replace("char","",$str);
- $str = str_replace("declare","",$str);
- $str = str_replace("select","",$str);
- $str = str_replace("create","",$str);
- $str = str_replace("delete","",$str);
- $str = str_replace("insert","",$str);
- $str = str_replace("'","",$str);
- $str = str_replace(""","",$str);
- $str = str_replace(" ","",$str);
- $str = str_replace("or","",$str);
- $str = str_replace("=","",$str);
- $str = str_replace("%20","",$str);
- //echo $str;
- return $str;
- }
- //aticle()防SQL注入函數//php教程
- function sqlin()
- {
- foreach ($_GET as $key=>$value)
- {
- $_GET[$key]=$this->dowith_sql($value);
- }
- foreach ($_POST as $key=>$value)
- {
- $_POST[$key]=$this->dowith_sql($value);
- }
- }
- }
- $dbsql=new sqlin();
- ?>
複製代碼使用方式:將以上代碼複製建立一個sqlin.php的檔案,然後包含在有GET或者POST資料接收的頁面 原理分析:將所有的SQL關鍵字替換為空白本代碼在留言本中不能使用,若要在留言本中使用請替換其中的.......$str = str_replace("and","",$str);到$str = str_replace("%20","",$str);...的代碼為:
- $str = str_replace("and","and",$str);
- $str = str_replace("execute","execute",$str);
- $str = str_replace("update","update",$str);
- $str = str_replace("count","count",$str);
- $str = str_replace("chr","chr",$str);
- $str = str_replace("mid","mid",$str);
- $str = str_replace("master","master",$str);
- $str = str_replace("truncate","truncate",$str);
- $str = str_replace("char","char",$str);
- $str = str_replace("declare","declare",$str);
- $str = str_replace("select","select",$str);
- $str = str_replace("create","create",$str);
- $str = str_replace("delete","delete",$str);
- $str = str_replace("insert","insert",$str);
- $str = str_replace("'","'",$str);
- $str = str_replace(""",""",$str);
- ?>
複製代碼-------------------------------------------------------addslashes -- 使用反斜線引用字串 string addslashes ( string str ) 返回字串,該字串為了資料庫查詢語句等的需要在某些字元前加上了反斜線。這些字元是單引號(')、雙引號(")、反斜線(\)與 NUL(NULL 字元)。 一個使用 addslashes() 的例子是當你要往資料庫中輸入資料時。例如,將名字 O'reilly 插入到資料庫中,這就需要對其進行轉義。大多資料庫使用 \ 作為轉義符:O\'reilly。這樣可以將資料放入資料庫中,而不會插入額外的 \。當 PHP 指令 magic_quotes_sybase 被設定成 on 時,意味著插入 ' 時將使用 ' 進行轉義。 預設情況下,PHP 指令 magic_quotes_gpc 為 on,它主要是對所有的 GET、POST 和 COOKIE 資料自動運行 addslashes()。不要對已經被 magic_quotes_gpc 轉義過的字串使用 addslashes(),因為這樣會導致雙層轉義。遇到這種情況時可以使用函數 get_magic_quotes_gpc() 進行檢測。get_magic_quotes_gpc()本函數取得 PHP 環境配置的變數 magic_quotes_gpc (GPC, Get/Post/Cookie) 值。返回 0 表示關閉本功能;返回 1 表示本功能開啟。當 magic_quotes_gpc 開啟時,所有的 ' (單引號), " (雙引號), \ (反斜線) and Null 字元會自動轉為含有反斜線的溢出字元。addslashes與stripslashes是php中對資料庫的字元進行操作時.乍一看好像很難記,但是只要分析一下,add是增加,strip是忽略.slash是斜線,slash就是斜線的複數.那麼addslashes就是增加斜線的意思,因為有些特殊的字元寫入資料庫後會出現問題,比如" '等,所以要加\給特殊符號轉義,告訴資料庫那些特殊符號是字串,同理stripslashes是從資料庫取出字串時就要減去斜線了. htmlspecialchars把某些特殊字元轉換成html的編碼,常用到的場合可能就是處理客戶留言的留言版了。這些特殊字元僅限於以下幾個:& -> &“ -> "< -> <> -> >htmlentities跟htmlspecialchars的功能類似,但是htmlentities是對所有HTML定義的entity都不放過,包括各種特殊字元和中文,這樣得出來的結果是中文字元部分變為一堆亂碼。htmlspecialchars_decode是htmlspecialchars的逆向過程,把html的編碼轉換成字元。php過濾特殊字元實用函數php表單提交特殊字元過濾方法html特殊字元過濾php類url連結中特殊字元轉義方法php特殊字元轉義詳解php過濾參數特殊字元防注入php 過濾非法與特殊字元串的方法php特殊字元處理函數的例子 |