zoukankan      html  css  js  c++  java
  • 防SQL注入

    最近中招<script   src=http://s.see9.us/s.js></script>,比较郁闷,真是猖獗啊,
    再回过头来看看代码中的拼接,发现几处Request.QueryString并不是用参数传值,没有做限制,估计就是漏洞点,只有在补充过滤类,来限制了
     1  /// <summary>
     2        /// 过滤SQL注入关键字[post,get]
     3       /// </summary>
     4       /// <param name="pStr"></param>
     5       /// <returns></returns>

     6       public static string  GetQueryStringSafe(string pStr)
     7       {
     8           bool IsValue = true;
     9           if (pStr != null && pStr.Length > 0)
    10           {
    11               pStr = pStr.ToLower();
    12               string strSQLin = "'|and|--|exec|insert|select|delete|update|count|*|%|chr|mid|master|truncate|char|declare|;|&|%20|==|>|<";
    13               string[] strSQLinGroup = strSQLin.Split(new char[] '|' }, 23);//23个关键字,有待补充
    14               for (int i = 0; i < strSQLinGroup.Length; i++)
    15               {
    16                   if (pStr.IndexOf(strSQLinGroup[i]) >= 0)//表示存在
    17                   {
    18                       IsValue = false;
    19                       break;
    20                   }

    21               }

    22           }

    23           else
    24           {
    25               IsValue = false;
    26           }

    27           if (IsValue)
    28           {
    29               return pStr;
    30           }

    31           else
    32               return "";
    33       }
    只需要在你用到拼接时,检查一下
    其实用重写来做,比较方便和安全,我看网上也有类似方法,但把过滤用StartProcessRequest()来实现,没有必要,并不是每个网页都有SQL操作.
    如果中招,数据库中已经被插入字符代码,先删除数据,方法如下:[针对远程数据库,本机数据库,或者自己的主机,直接还原好]
    在查询分析器中列出需要删除数据的表,如果某些表不删,在where后加 and a.name <> '不删数据表'
    1 select   'truncate   table   '   +a.name+char(13)
    2  from     sysobjects   a       
    3  where   a.type=   'u'   
    4  order   by   a.name   
    然后复制查询出的内容,复制到查询分析器中执行
    再把以前备份的数据建导进去,不要告诉我你重来没有备份过数据吧

  • 相关阅读:
    小心SQL SERVER 2014新特性——基数评估引起一些性能问题
    SQL SERVER使用ODBC 驱动建立的链接服务器调用存储过程时参数不能为NULL值
    Windows Server 2012 Recycle Bin corrupted
    SQL SERVER CHAR ( integer_expression )各版本返回值差异的案例
    SQL Server 2008 R2 升级到 Service Pack 3后Report Builder启动不了
    MySQL如何导出带日期格式的文件
    ORACLE TO_CHAR函数格式化数字的出现空格的原因
    Linux监控工具介绍系列——smem
    Linux命令学习总结:dos2unix
    Linux命令学习总结:hexdump
  • 原文地址:https://www.cnblogs.com/zjy/p/1193003.html
Copyright © 2011-2022 走看看