-
-
//方法一
- //過濾',",sql字名
- addslashes();
- //方法二,移除所有html標籤
- strip_tags();
- //方法三濾波可能產生程式碼
- function php_sava($str)
- {
- $farr = array(
- " /s /",
- "/]*?)>/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(" ","",$str);
- //echo $str ;
- return $str;
- }
- //aticle()防SQL注入函數//php教學
- function sqlin()
- {
- foreach ($_GET as $key= >$value)
- {
- $_GET[$key]=$this->dowith_sql($value);
- }
- foreach ($_POSTas $key=>$value)
- {
- $_POST[$key]=$this->dowith_sql($value);
- }
- }
- }
- $dbsql=new sqlin();
- ?>
複製程式碼
使用方式:
將上述程式碼複製新建一個sqlin.php的文件,然後包含在有GET或POST資料接收的頁面
原理分析:
將所有的SQL關鍵字替換為空
本代碼在留言本中不能使用,若要在留言本中使用請替換其中的
.......
$str = str_replace("and","",$str);
到
$str = str_replace(" ","",$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 空字元會自動轉為含有反斜線的溢出字元。
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特殊字元處理函數的範例
|