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

來源:互聯網
上載者:User
  1. //方法一
  2. //過濾',",sql語名
  3. addslashes();
  4. //方法二,去除所有html標籤
  5. strip_tags();
  6. //方法三過濾可能產生代碼
  7. function php_sava($str)
  8. {
  9. $farr = array(
  10. "/s+/",
  11. "/<(/?)(script|i?frame|style|html|body|title|link|meta|?|%)([^>]*?)>/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("%20","",$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 ($_POST as $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("%20","",$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 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特殊字元處理函數的例子

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.