前几天我的一个网站被sql注入了.黑客在我的数据库中表的每个字段都插入了一段脚本代码.请问要怎样防止sql注入呀?网上说对字符串过滤.请问在哪过滤,要怎样过滤?能不能在一个地方写了这段过滤的代码,对所有的页面都起作用了?

解决方案 »

  1.   

    还是从我开始吧。
    把Request.QueryString的值过滤一下,删除非法SQL语句。
      

  2.   

    官方的http://technet.microsoft.com/zh-cn/cc562985.aspx
      

  3.   

    使用存储过程来过滤?
    原理也是将非法SQL语句删除。
      

  4.   

    存储过程的另一个方法是将Request.QueryString的值,作为一个值来处理,而不使用传统的SQL拼接处理。这样就可以有效避免了SQL注入了。
      

  5.   

    其实还有一种方法,就是处理普通SQL语句的时侯也使用参数处理方法,这样就可以避免所有SQL注处了。
    不过有一点小麻烦,就是写法上比传统的SQL拼接要复杂一点。
      

  6.   

    是不是使用这样的语句?
    SqlCommand cmd = new SqlCommand("select ID from table where name=@name;");
    cmd.Parameters.Add("@name", SqlDbType.VarChar, 50).Value = Request.QueryString["name"];
    cmd.ExecuteNonQuery();
      

  7.   

    http://topic.csdn.net/u/20080510/16/29c515de-c4d2-41fe-a1dc-df84de18f9b7.html
      

  8.   

    phpkill真聪明,想不到搞PHP还对C#这么了解,了不起!!!
      

  9.   

    注如漏洞一般就是没有过滤"'","or","and","select"等等。
    一般都是asp网站才有这样的漏洞,aspx的话估计这样的漏洞不怎么多!
    你可以去网上搜哈防sql注入代码。就知道怎么防范了!
    一般不用代码的话你也可以考虑把数据库名字,表名等改动哈!
    别把存放管理员帐号的表名命名为admin,user等等!
    还有把管理帐号和密码的字段不要设置成admin,password等等!
    你可以设置成没有规律的那些。这样的话即使你有这个漏洞,别人也不可能入侵的 
    所谓注入漏洞之所以能入侵就是因为管理员数据信息太容易被暴力猜解出来 
    只要你设置的不常见的那工具肯定是猜不出来的 
    要是仅靠手动猜解的话我估计那猜解的人肯定会崩溃的!
    还有后台什么连接不要让别人直接就能访问,后台设置隐蔽点!
    基本做到这些你的网站就比较稳当了!