我的数据库老本注入了,经过分析发现,很多字段都在后面加了script脚本
但是只要字段是空的就没有被注入,有值的都被注入了我在每个网页的前面都加了如下的防范措施:
Dim sql_injdata 
Dim SQL_inj
Dim SQL_Get
Dim SQL_Data
Dim Sql_Post
SQL_injdata = "--|exec|insert|select|delete|update|count|mid|master|truncate|char|declare" 
SQL_inj = split(SQL_Injdata,"|") 
If Request.QueryString<>"" Then 
  For Each SQL_Get In Request.QueryString 
    For SQL_Data=0 To Ubound(SQL_inj) 
      If instr(LCase(Request.QueryString(SQL_Get)),Sql_Inj(Sql_DATA))>0 Then 
        Response.Write "<Script Language=javascript>alert('系统提示包含非法字符:"&Sql_Inj(Sql_DATA)&"\n请去掉内容中的该字符再次提交!');history.back(-1)</Script>" 
        Response.End 
      End If 
    Next 
  Next 
End If If Request.Form<>"" Then 
  For Each Sql_Post In Request.Form 
    For SQL_Data=0 To Ubound(SQL_inj) 
      If instr(LCase(Request.Form(Sql_Post)),Sql_Inj(Sql_DATA))>0 Then 
        Response.Write "<Script Language=javascript>alert('系统提示包含非法字符:"&Sql_Inj(Sql_DATA)&"\n请去掉内容中的该字符再次提交!');history.back(-1)</Script>" 
        Response.End 
      End If 
    Next 
  Next 
End If 
但是还是被注入了,请问还有那些需要做的,谢谢!

解决方案 »

  1.   

    SQL注入专题
    http://topic.csdn.net/u/20081205/09/3dd06076-bcbe-45d4-998c-8999fdbe6fae.html
      

  2.   

    參考資料
    http://social.technet.microsoft.com/Forums/zh-TW/sqlservermanagementzhcht/thread/218aba6e-6315-40db-b2e3-687beb05915f
      

  3.   

    最好在来个客户端就开始验证的JS脚本最好别使用sql拼接,多使用存储过程传递参数如果代码改动比较大,最好察看IIS日志,找到攻击你的IP,过滤掉,要不你还没有改好,这边又开始注入了啊,很是烦人的呀
      

  4.   

    以上还缺少cookie注入,另外你的SQL_injdata定义也不完整啊
      

  5.   

    use 数据库A
    go
    DENY SELECT on dtproperties to  程序里面的连接数据库啊的用户;
    DENY SELECT on syscolumns to   程序里面的连接数据库啊的用户;
    DENY SELECT on sysdepends to   程序里面的连接数据库啊的用户;
    DENY SELECT on sysfilegroups to   程序里面的连接数据库啊的用户;
    DENY SELECT on sysfiles to   程序里面的连接数据库啊的用户;
    DENY SELECT on sysforeignkeys to   程序里面的连接数据库啊的用户;
    DENY SELECT on sysfulltextcatalogs to   程序里面的连接数据库啊的用户;
    DENY SELECT on sysindexkeys to   程序里面的连接数据库啊的用户;
    DENY SELECT on sysobjects to   程序里面的连接数据库啊的用户;
    DENY SELECT on sysmembers to   程序里面的连接数据库啊的用户;
    DENY SELECT on syspermissions to   程序里面的连接数据库啊的用户;
    DENY SELECT on sysproperties to   程序里面的连接数据库啊的用户;
    DENY SELECT on sysprotects to   程序里面的连接数据库啊的用户;
    DENY SELECT on sysreferences to   程序里面的连接数据库啊的用户;
    DENY SELECT on systypes to   程序里面的连接数据库啊的用户;
      

  6.   

    很多字段都在后面加了script脚本   这个你仔细观察下  是不是 这些字段都是varchar的
      

  7.   

    如何根本解决这个问题呢?我尽可能字符串过滤,SQL用户权限也做了限制,查不出是怎么注入进来的,大家有什么好的根本解决问题的方法呢