最近出现很多数据库被攻击案例,在数据库中的文本型字段中加入了script代码
现给出一段基于mssql的解决代码:
替换数据里所有表的所有字符型字段中的某些值
declare @ReplaceSourceStr varchar(100),@ReplaceDescStr varchar(100)
select @ReplaceSourceStr='<script>',@ReplaceDescStr=''
select 'update '+tbls.name+' set [' + cols.name + ']=replace(['+cols.name+'],'''+@ReplaceSourceStr+''','''+@ReplaceDescStr+''')'
from
(select * from sysobjects where xtype='u') tbls
inner join
syscolumns cols on cols.id=tbls.id
where cols.xtype in (select xtype from systypes where name in('varchar','nvarchar'))
生成的语句类似如下:
update set ...
update set ...
...
本代码只生成更新语句,不执行具体更新操作!
注: 由于涉及到数据库数据更改,所以此代码仅做参考,如果使用不当造成的损失,请自己负责!