彻底杜绝SQL注入 1.不要使用sa用户连接数据库 
2、新建一个public权限数据库用户,并用这个用户访问数据库 
3、[角色]去掉角色public对sysobjects与syscolumns对象的select访问权限 
4、[用户]用户名称-> 右键-属性-权限-在sysobjects与syscolumns上面打“×” 
5、通过以下代码检测(失败表示权限正确,如能显示出来则表明权限太高): 
DECLARE   @T   varchar(255), 
@C   varchar(255) 
DECLARE   Table_Cursor   CURSOR   FOR 
Select   a.name,b.name   from   sysobjects   a,syscolumns   b 
where   a.id=b.id   and   a.xtype= 'u '   and   (b.xtype=99   or   b.xtype=35   or   b.xtype=231   or   b.xtype=167)   
OPEN   Table_Cursor 
FETCH   NEXT   FROM   Table_Cursor   INTO   @T,@C 
WHILE(@@FETCH_STATUS=0) 
BEGIN   print   @c 
FETCH   NEXT   FROM   Table_Cursor   INTO   @T,@C   
END 
CLOSE   Table_Cursor 
DEALLOCATE   Table_Cursor   
以上设置 其中第3,4两步,在SQL2005中,如何设置?????

解决方案 »

  1.   

    、[角色]去掉角色public对sysobjects与syscolumns对象的select访问权限 
    找到数据库中角色,PUBLIC,然后右键,属性,会有权限设置的
      

  2.   

    2楼的,你去找找看,能找到我佩服你!我用的是正版,SQL2005标准版
      

  3.   

    TMD SQL2005 有sysobjects与syscolumns 这两表吗?
      

  4.   

    sysobjects
    好像2005中是打点的sys.objects你去查询分析器执行一下,看看,SELECT * FROM sys.objects要不然等用过2005的来分析
      

  5.   

    注入说到底
    1 全用存储过程访问
    2 前台程序员避免直接调用sql
    3 参数要过滤