zoukankan      html  css  js  c++  java
  • 删除MSSQL数据库text字段中恶意脚本<Script="***.js"></script>的方法

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

    -select * from Product where P_Intro like '%<script 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></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></script>%' 
    -- where  P_ID=300727   ----where P_Intro like '%<script 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 
    邀月注:本文版权由邀月和博客园共同所有,转载请注明出处。
    助人等于自助!  3w@live.cn
  • 相关阅读:
    Docker系统知识整理(从安装到熟练操作)
    Dockerfile 文件介绍
    Cmake命令之add_subdirectory介绍
    Cmake实战指南
    cmake的四个命令:add_compile_options、add_definitions、target_compile_definitions、build_command
    cmake:选择编译器及设置编译器选项
    Task异常
    单元测试误区
    网络的核心概念
    java~使用枚举来实现接口的多态
  • 原文地址:https://www.cnblogs.com/downmoon/p/1532581.html
Copyright © 2011-2022 走看看