防范sql注入式攻击的比较有见地的代码(PHP)

  1. $_POST = sql_injection($_POST);  
  2. $_GET = sql_injection($_GET);  
  3.   
  4.   
  5.   
  6.   
  7. function sql_injection($content)  
  8. {  
  9. if (!get_magic_quotes_gpc()) {  
  10. if (is_array($content)) {  
  11. foreach ($content as $key=>$value) {  
  12. $content[$key] = addslashes($value);  
  13. }  
  14. else {  
  15. addslashes($content);  
  16. }  
  17. }  
  18. return $content;  
  19. }  
  20.   
  21.   
  22.   
  23.   
  24.   
  25.   
  26.   
  27.   
  28.   
  29. 做系统的话,可以用下面的代码,也是copy来的:  
  30.   
  31.   
  32.   
  33.   
  34. /*  
  35. 函数名称:inject_check()  
  36. 函数作用:检测提交的值是不是含有SQL注射的字符,防止注射,保护服务器安全  
  37. 参  数:$sql_str: 提交的变量  
  38. 返 回 值:返回检测结果,ture or false  
  39. */   
  40. function inject_check($sql_str) {   
  41. return eregi('select|insert|update|delete|'|/*|*|../|./|union|into|load_file|outfile', $sql_str); // 进行过滤  
  42.  
  43.  
  44. /*  
  45. 函数名称:verify_id()  
  46. 函数作用:校验提交的ID类值是否合法  
  47. 参  数:$id: 提交的ID值  
  48. 返 回 值:返回处理后的ID  
  49. */   
  50. function verify_id($id=null) {   
  51. if (!$id) { exit('没有提交参数!'); } // 是否为空判断   
  52. elseif (inject_check($id)) { exit('提交的参数非法!'); } // 注射判断   
  53. elseif (!is_numeric($id)) { exit('提交的参数非法!'); } // 数字判断   
  54. $id = intval($id); // 整型化   
  55.   
  56. return $id;   
  57. }   
  58.   
  59. /*  
  60. 函数名称:str_check()  
  61. 函数作用:对提交的字符串进行过滤  
  62. 参  数:$var: 要处理的字符串  
  63. 返 回 值:返回过滤后的字符串  
  64. */   
  65. function str_check( $str ) {   
  66. if (!get_magic_quotes_gpc()) { // 判断magic_quotes_gpc是否打开   
  67. $str = addslashes($str); // 进行过滤   
  68. }   
  69. $str = str_replace("_""\_"$str); // 把 '_'过滤掉   
  70. $str = str_replace("%""\%"$str); // 把 '%'过滤掉   
  71.   
  72. return $str;   
  73. }   
  74.   
  75. /*  
  76. 函数名称:post_check()  
  77. 函数作用:对提交的编辑内容进行处理  
  78. 参  数:$post: 要提交的内容  
  79. 返 回 值:$post: 返回过滤后的内容  
  80. */   
  81. function post_check($post) {   
  82. if (!get_magic_quotes_gpc()) { // 判断magic_quotes_gpc是否为打开   
  83. $post = addslashes($post); // 进行magic_quotes_gpc没有打开的情况对提交数据的过滤   
  84. }   
  85. $post = str_replace("_""\_"$post); // 把 '_'过滤掉   
  86. $post = str_replace("%""\%"$post); // 把 '%'过滤掉   
  87. $post = nl2br($post); // 回车转换   
  88. $post = htmlspecialchars($post); // html标记转换   
  89.   
  90. return $post;   
  91. }   
  92. ?>  
posted on 2012-12-20 09:39  左耳击飞  阅读(629)  评论(2编辑  收藏  举报