ホームページ  >  記事  >  バックエンド開発  >  PHPフィルター特殊文字SQLアンチインジェクションコード

PHPフィルター特殊文字SQLアンチインジェクションコード

WBOY
WBOYオリジナル
2016-07-25 08:54:031173ブラウズ
  1. //方法 1
  2. //フィルター',",SQL 言語名
  3. addslashes();
  4. //方法 2、すべての HTML タグを削除します
  5. strip_tags();
  6. //方法 3フィルタリングによりコードが生成される場合があります
  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. 関数 dowith_sql($str)
  27. {
  28. $str = str_replace("and","",$str);
  29. $str = str_replace("実行","",$str);
  30. $str = str_replace( "更新" ,"",$str);
  31. $str = str_replace("カウント","",$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( "作成","",$str);
  40. $str = str_replace("削除","",$str);
  41. $str = str_replace("挿入","",$str);
  42. $ str = str_replace ("'","",$str);
  43. $str = str_replace(""","",$str);
  44. $str = str_replace(" ","",$str);
  45. $ str = str_replace ("または","",$str);
  46. $str = str_replace("=","",$str);
  47. $str = str_replace("%20","",$str);
  48. // echo $str;
  49. return $str;
  50. }
  51. //aticle() アンチ SQL インジェクション関数//php チュートリアル
  52. 関数 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("と","",$str); 到着 $str = str_replace("%20","",$str); ... コードは次のとおりです。

  1. $str = str_replace("and","and",$str);
  2. $str = str_replace("実行","実行",$str);
  3. $str = str_replace ("update","update",$str);
  4. $str = str_replace("count","count",$str);
  5. $str = str_replace("chr","c hr",$str);
  6. $str = str_replace("mid","mid",$str);
  7. $str = str_replace("マスター","マスター",$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("選択","選択",$str);
  12. $str = str_replace("作成","create",$str);
  13. $str = str_replace("削除" ,"削除",$str);
  14. $str = str_replace("挿入","挿入",$str);
  15. $str = str_replace("'","'",$str);
  16. $ str = str_replace(""",""",$str);
  17. ?>
コードをコピー

------------------------------------------------- ------ addslashes – 文字列を引用するにはバックスラッシュを使用します

文字列はスラッシュを追加します (文字列 str )

データベースクエリステートメントなどの特定の文字の前にバックスラッシュを追加した文字列を返します。これらの文字は、一重引用符 (')、二重引用符 (")、バックスラッシュ ()、および NUL (NULL 文字) です。

addslashes() の使用例は、データベースにデータを入力する場合です。たとえば、O'reilly という名前をデータベースに挿入するには、エスケープする必要があります。ほとんどのデータベースはエスケープ文字として O'reilly を使用します。これにより、余分な .html を挿入することなく、データがデータベースに保存されます。 PHP ディレクティブ magic_quotes_sybase が on に設定されている場合、' の挿入は ' でエスケープされることを意味します。

デフォルトでは、PHP 命令 magic_quotes_gpc がオンになっており、主にすべての 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 がオンになっている場合、すべての ' (一重引用符)、" (二重引用符)、(バックスラッシュ)、およびヌル文字は、バックスラッシュを含むオーバーフロー文字に自動的に変換されます。 追加スラッシュとストリップスラッシュは、PHP でデータベース文字を操作するために使用されます。 一見覚えるのが難しそうですが、分析してみると、 add は追加する、strip は無視するという意味で、slash はスラッシュの複数形で、addslashes はスラッシュを追加するという意味になります。文字がデータベースに書き込まれると、「 」などの問題が後で発生するため、特殊記号をエスケープして、それらの特殊記号が文字列であることをデータベースに伝える必要があります。同様に、ストリップスラッシュは、文字列を取得するときにスラッシュを減算する必要があります。データベースからの文字列。 htmlspecialchars は、特定の特殊文字を HTML エンコーディングに変換します。最も一般的に使用されるのは、顧客メッセージを処理する掲示板です。 これらの特殊文字は次のものに限定されます。 & -> & 「 -> 」

-> > htmlentities の機能は htmlspecialchars と似ていますが、htmlentities はさまざまな特殊文字や中国語を含む HTML で定義されたすべてのエンティティを無視します。その結果、中国語の文字が文字化けの塊になります。 htmlspecialchars_decode は htmlspecialchars の逆の処理で、HTML エンコーディングを文字に変換します。 特殊文字をフィルタリングするためのPHPユーティリティ関数 PHPフォーム送信時の特殊文字フィルタリング方法 html特殊文字フィルターPHPクラス URLリンク内の特殊文字をエスケープする方法 PHPの特殊文字エスケープの詳しい説明 phpフィルターパラメータの特殊文字のアンチインジェクション 不正な特殊な文字列をフィルタリングするためのphpメソッド PHPの特殊文字処理関数の例


声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。