写一个方法过滤,例如
//过滤特殊字符串
        public static string FiltrateWord(string str)
        {
            str = str.Replace("&", "&");
            str = str.Replace("<", "&lt;");
            str = str.Replace(">", "&gt");
            str = str.Replace("'", "‘");
            str = str.Replace("*", "×");
            //str = str.Replace("\n", " ");
            //str = str.Replace("\r\n", " ");
            str = str.Replace("?", "?");
            str = str.Replace("select", " ");
            str = str.Replace("insert", " ");
            str = str.Replace("update", " ");
            str = str.Replace("delete", " ");
            str = str.Replace("create", " ");
            str = str.Replace("drop", " ");
            str = str.Replace("delcare", " ");
            str = str.Replace("^", " ");
            str = str.Replace("%", " %");
            str = str.Replace("+", "+");
            str = str.Replace("-", "-");
            str = str.Replace("exec", " ");
            str = str.Replace(":", ":");
            str = str.Replace(";", ";");
            return str;
        }

解决方案 »

  1.   

    不会攻击吧,用sql command等.net内置的东东,用sqlparameter等变量,很难攻击的。
    我还没见过通过用户名和密码来攻击的,呵呵
      

  2.   

    如果是sql注入攻击的话,使用类型安全的参数化查询就可以了,注意in like等中的参数不能使用,还是要过滤非法字符
    如果是跨站脚本攻击并且文本框中的字符是不支持html的,那进行HtmlEncode是最简单有效的防范措施。
    可以到微软网站上搜索一下安全的相关内容。
      

  3.   

    正则验证输入~~例如:[a-zA-Z0-9_]{4,20}这样来验证用户名应该没什么问题
      

  4.   

    我今天 用VS2005做的时候发现 当我在 文本框中输入脚本后在 运行程序
    VS2005就报错 显示发现危险性代码 程序停止 难道VS2005本身能够 检测 脚本攻击??   
      

  5.   

    1.存储过程
    2.可以先通过对用户名查询出这条数据,得到Dararow
    然后再Datarow中取密码进行比较
      

  6.   

    1\存储过程
    2\参数化
    3\限制textbox的输入长度
      

  7.   

    应该用weizhuangzhi(壮志)的方法,SQL注如入和脚本攻击两回事,大家不要混为一谈