ホームページ  >  記事  >  バックエンド開発  >  SQL インジェクションの脆弱性を防ぐための非常に便利な PHP フィルタリング関数コード

SQL インジェクションの脆弱性を防ぐための非常に便利な PHP フィルタリング関数コード

WBOY
WBOYオリジナル
2016-07-25 09:03:421225ブラウズ
  1. //PHPサイト全体のアンチインジェクションプログラム、このファイルを公開ファイルにrequire_onceする必要があります
  2. //magic_quotes_gpcのステータスを判断する
  3. if (@get_magic_quotes_gpc ()) {
  4. $_GET = 秒 ( $_GET );
  5. $_POST = 秒 ( $_POST );
  6. $_COOKIE = 秒 ( $_COOKIE );
  7. $_FILES = 秒 ( $_FILES );
  8. }
  9. $_SERVER = 秒 ( $_SERVER );
  10. function sec(&$ array) {
  11. //配列の場合、配列を走査して再帰的に呼び出します
  12. if (is_array ( $array )) {
  13. foreach ( $array as $k => $v ) {
  14. $ array [$k] = sec ( $v );
  15. }
  16. } else if (is_string ( $array )) {
  17. //addslashes 関数を使用して処理します
  18. $array =addslashes ( $array );
  19. } else if (is_numeric ( $array )) {
  20. $ array = intval ( $array );
  21. }
  22. return $array;
  23. }
  24. //整数フィルター関数
  25. function num_check($id) {
  26. if (! $id) {
  27. die ( 'パラメータを空にすることはできません!' );
  28. } //空かどうかの判定
  29. else if (inject_check ( $id )) {
  30. die ( 'illegal pattern' );
  31. } // インジェクションの判定
  32. else if ( ! is_numetic ( $id )) {
  33. die ('不正なパラメータ');
  34. }
  35. //数値判定
  36. $id = intval ($id);
  37. //整数化
  38. return $id;
  39. }
  40. //文字フィルターfunction
  41. function str_check($str ) {
  42. if (inject_check ( $str )) {
  43. die ( 'illegalparameter' );
  44. }
  45. //インジェクション判定
  46. $str = htmlspecialchars ( $str );
  47. // htmlを変換
  48. return $str;
  49. }
  50. function search_check($str) {
  51. $str = str_replace ( "_", "_", $str );
  52. //「_」を除外
  53. $str = str_replace ( "%" , "%", $ str );
  54. //"%" を除外
  55. $str = htmlspecialchars ( $str );
  56. //html を変換
  57. return $str;
  58. }
  59. //フォームフィルター関数
  60. function post_check($ str, $min, $max) {
  61. if (isset ( $min ) && strlen ( $str ) < $min) {
  62. die ( '最小 $min バイト' );
  63. } else if (isset ( $max ) && strlen ( $ str ) > $max) {
  64. die ( '$max バイトまで' );
  65. }
  66. returntripslashes_array ( $str );
  67. }
  68. //アンチインジェクション関数
  69. function inject_check($sql_str) {
  70. return eregi ( 'select|inert|update|delete|'|/*|*|../|./|UNION|into|load_file|outfile', $sql_str );
  71. // フィルタリングしてインジェクションを防止します
  72. }
  73. functionstripslashes_array( &$array) {
  74. if (is_array ( $array )) {
  75. foreach ( $array as $k => $v ) {
  76. $array [$k] =tripslashes_array ( $v );
  77. }
  78. } else if (is_string ( $array )) {
  79. $array =tripslashes ( $array );
  80. }
  81. return $array;
  82. }
  83. ?>
コードをコピー


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