php過濾特殊字元sql防注入程式碼

WBOY
發布: 2016-07-25 08:54:03
原創
1231 人瀏覽過
  1. //方法一
  2. //過濾',",sql字名
  3. addslashes();
  4. //方法二,移除所有html標籤
  5. strip_tags();
  6. //方法三濾波可能產生程式碼
  7. function php_sava($str)
  8. {
  9. $farr = array(
  10. " /s /",
  11. "/]*?)>/isU" ,
  12. "/(]*)on[a-zA-Z] s*=([^>]*>)/isU",
  13. );
  14. $tarr = array(
  15. " ",
  16. "<>", //如果要直接清除不安全的標籤,這裡可以留空
  17. "",
  18. );
  19. $str = preg_replace ( $farr,$tarr,$str);
  20. return $str;
  21. }
  22. //php sql防注入程式碼
  23. class sqlin
  24. {
  25. //dowith_sql($value )
  26. function dowith_sql($str)
  27. {
  28. $str = str_replace("and","",$str);
  29. $str = str_replace("execute","",$str );
  30. $str = str_replace("update","",$str);
  31. $str = str_replace("count","",$str);
  32. $str = str_replace("chr ","",$str);
  33. $str = str_replace("mid","",$str);
  34. $str = str_replace("master","",$str);
  35. $str = str_replace("truncate","",$str);
  36. $str = str_replace("char","",$str);
  37. $str = str_replace("declare","", $str);
  38. $str = str_replace("select","",$str);
  39. $str = str_replace("create","",$str);
  40. $str = str_replace( "delete","",$str);
  41. $str = str_replace("insert","",$str);
  42. $str = str_replace("'","",$str);
  43. $str = str_replace(""","",$str);
  44. $str = str_replace(" ","",$str);
  45. $str = str_replace("or","" ,$str);
  46. $str = str_replace("=","",$str);
  47. $str = str_replace(" ","",$str);
  48. //echo $str ;
  49. return $str;
  50. }
  51. //aticle()防SQL注入函數//php教學
  52. function sqlin()
  53. {
  54. foreach ($_GET as $key= >$value)
  55. {
  56. $_GET[$key]=$this->dowith_sql($value);
  57. }
  58. foreach ($_POSTas $key=>$value)
  59. {
  60. $_POST[$key]=$this->dowith_sql($value);
  61. }
  62. }
  63. }
  64. $dbsql=new sqlin();
  65. ?>
複製程式碼

使用方式: 將上述程式碼複製新建一個sqlin.php的文件,然後包含在有GET或POST資料接收的頁面

原理分析: 將所有的SQL關鍵字替換為空 本代碼在留言本中不能使用,若要在留言本中使用請替換其中的 ....... $str = str_replace("and","",$str); 到 $str = str_replace(" ","",$str); …… 的代碼為:

  1. $str = str_replace("and","and",$str);
  2. $str = str_replace("execute","execute" ,$str);
  3. $str = str_replace("update","update",$str);
  4. $str = str_replace("count","count",$str);
  5. $str = str_replace("chr","chr",$str);
  6. $str = str_replace("mid","mid",$str);
  7. $str = str_replace("master","master" ,$str);
  8. $str = str_replace("truncate","truncate",$str);
  9. $str = str_replace("char","char",$str);
  10. $str = str_replace("declare","declare",$str);
  11. $str = str_replace("select","select",$str);
  12. $str = str_replace("create","create" ,$str);
  13. $str = str_replace("delete","delete",$str);
  14. $str = str_replace("insert","insert",$str);
  15. $str = str_replace("'","'",$str);
  16. $str = str_replace(""",""",$str);
  17. ?>
複製代碼

----------------------------------------------- -------- 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特殊字元處理函數的範例



來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板