php sql防注入以及 html 过滤安全函数

方法一过滤html自定义函数,代码如下:

  1. function ihtmlspecialchars($string) {
  2. if(is_array($string)) {
  3. foreach($string as $key => $val) {
  4. $string[$key] = ihtmlspecialchars($val);
  5. } //开源代码phpfensi.com
  6. } else {
  7. $string = preg_replace('/&((#(d{3,5}|x[a-fa-f0-9]{4})|[a-za-z][a-z0-9]{2,5});)/', '&\1',
  8. str_replace(array('&', '"', '<', '>'), array('&amp;', '&quot;', '&lt;', '&gt;'), $string));
  9. }
  10. return $string;

方法二,代码如下:

  1. // $rptype = 0 表示仅替换 html标记
  2. // $rptype = 1 表示替换 html标记同时去除连续空白字符
  3. // $rptype = 2 表示替换 html标记同时去除所有空白字符
  4. // $rptype = -1 表示仅替换 html危险的标记
  5. function htmlreplace($str,$rptype=0)
  6. {
  7. $str = stripslashes($str);
  8. if($rptype==0)
  9. {
  10. $str = htmlspecialchars($str);
  11. }
  12. else if($rptype==1)
  13. {
  14. $str = htmlspecialchars($str);
  15. $str = str_replace(" ",' ',$str);
  16. $str = ereg_replace("[rnt ]{1,}",' ',$str);
  17. }
  18. else if($rptype==2)
  19. {
  20. $str = htmlspecialchars($str);
  21. $str = str_replace(" ",'',$str);
  22. $str = ereg_replace("[rnt ]",'',$str);
  23. }
  24. else
  25. {
  26. $str = ereg_replace("[rnt ]{1,}",' ',$str);
  27. $str = eregi_replace('script','script',$str);
  28. $str = eregi_replace("<[/]{0,1}(link|meta|ifr|fra)[^>]*>",'',$str);
  29. }
  30. return addslashes($str);
  31. }

其它方法,php过滤不安全字符函数,代码如下:

  1. function uh($str)
  2. {
  3. $farr = array(
  4. "/s+/",//过滤多余的空白
  5. "/<(/?)(script|i?frame|style|html|body|title|link|meta|?|%)([^>]*?)>/isu",//过滤 <script 等可能引入恶意内容或恶意改变显示布局的代码,如果不需要插入flash等,还可以加入<object的过滤
  6. "/(<[^>]*)on[a-za-z]+s*=([^>]*>)/isu",//过滤网页特效的on事件
  7. );
  8. $tarr = array(
  9. " ",
  10. "<\1\2\3>", //如果要直接清除不安全的标签,这里可以留空
  11. "\1\2",
  12. );
  13. $str = preg_replace($farr,$tarr,$str);
  14. return $str;