php防注入过滤客户提交$_GET 和$_POST参数

下面一款防止php页面给sql注入的一个程序代码,有需要的朋友可参考,以下代码实现过滤php的$_GET 和$_POST参数.

php防注入过滤客户提交$_GET 和$_POST参数实例代码如下:

  1. /**
  2. * 安全防范
  3. */
  4. function Add_S($array)
  5. {//开源代码phpfensi.com
  6. foreach($array as $key=>$value)
  7. {
  8. if(!is_array($value))
  9. {
  10. $value = get_magic_quotes_gpc()?$value:addslashes($value);
  11. $array[$key]=filterHtml($value);
  12. }
  13. Else
  14. {
  15. Add_S($array[$key]);
  16. }
  17. }
  18. return $array;
  19. }
  20. function glstr($var) {
  21. if (is_array($var)) {
  22. return Add_S($var);
  23. }
  24. elseif(strlen($var)){
  25. $var = get_magic_quotes_gpc()?$var:addslashes($var);
  26. $var = filterHtml($var);
  27. }
  28. return $var;
  29. }
  30. function filterHtml($html)
  31. {
  32. $farr = array(
  33. "/<!DOCTYPE([^>]*?)>/eis",
  34. "/<(/?)(html|body|head|link|meta|base|input)([^>]*?)>/eis",
  35. "/<(script|i?frame|style|title|form)(.*?)</\1>/eis",
  36. "/(<[^>]*?s+)on[a-z]+s*?=("|')([^\2]*)\2([^>]*?>)/isU",//过滤javascript的on事件
  37. "/s+/",//过滤多余的空白
  38. );
  39. $tarr = array(
  40. "",
  41. "",
  42. "",
  43. "\1\4",
  44. " ",
  45. );
  46. $html = preg_replace( $farr,$tarr,$html);
  47. return $html;
  48. }
  49. if (sizeof($_GET)) {
  50. foreach($_GET as $key => $value) {
  51. $_GET[$key] = glstr($value); //
  52. }
  53. }
  54. if (sizeof($_POST)) {
  55. foreach($_POST as $key => $value) {
  56. $_POST[$key] = glstr($value); //
  57. }
  58. }