欧美成人精品手机在线观看_69视频国产_动漫精品第一页_日韩中文字幕网 - 日本欧美一区二区

LOGO OA教程 ERP教程 模切知識交流 PMS教程 CRM教程 開發文檔 其他文檔  
 
網站管理員

數據庫被批量注入解決辦法(SQL語句)

admin
2011年1月30日 21:47 本文熱度 3464

針對最近老是出現的SQL注入,借鑒網上一些SQL語句,寫了如下語句。希望對中招的朋友有所幫助。


使用方法:復制以下代碼到SQL查詢分析器,將‘<script src=http://cn.jxmmtv.com/cn.js></script>’修改成被注入的腳本。



declare @delStr nvarchar(500)
set @delStr='<script src=http://cn.jxmmtv.com/cn.js></script>'

set nocount on

declare @tableName nvarchar(100),@columnName nvarchar(100),@tbID int,@iRow int,@iResult int
declare @sql nvarchar(4000)

set @iResult=0
declare cur cursor for
select name,id from sysobjects where xtype='U'

open cur
fetch next from cur into @tableName,@tbID

while @@fetch_status=0
begin
   declare cur1 cursor for
        --xtype in (231,167,239,175) 為char,varchar,nchar,nvarchar類型35為text,99為ntext
        select name from syscolumns where xtype in (35,99) and id=@tbID
   open cur1
   fetch next from cur1 into @columnName
   while @@fetch_status=0
   begin
  
             
      set @sql = 'update ['+ @tableName +']   set [' +  @columnName+ '] = replace(cast([' + @columnName + '] as varchar(8000)) ,''' + @delStr + ''','''') where ['+@columnName+'] like ''%'+@delStr+'%'''   
      --execute sp_executesql @sql  --第一次運行,先注釋掉本句,查看數據庫被破壞情況,根據情況選擇是否啟用該語句
     
      set @iRow=@@rowcount
      set @iResult=@iResult+@iRow
      print @sql
      fetch next from cur1 into @columnName        
      set     @sql='declare @rowValue varchar(4000);
                  declare @indexofstr int;
                  --declare @badrowcount int;
                  --declare @normalrowcount int;
                  set @badrowcount  = 0
                  set @normalrowcount = 0
                  declare cur2 cursor for select ['+ @columnName +'] from [' + @tableName + '];
                  open cur2;fetch next from cur2 into @rowValue;
                  while @@fetch_status=0
                  begin
                      select @indexofstr = charindex('''+@delStr+''',@rowValue);
                         
                      if(@indexofstr>0)
                            set @badrowcount  = @badrowcount + 1;
                      else


                           set @normalrowcount  = @normalrowcount + 1;
                      fetch next from cur2 into @rowValue;
                  end;
                  close cur2;
                  deallocate cur2;
                  select @maxlength  = max(DATALENGTH( ['+ @columnName +']  )) from [' + @tableName + '] '
      declare @badrowcount int,@normalrowcount int,@maxlength int
      execute sp_executesql @sql,N'@badrowcount int output,@normalrowcount int output,@maxlength int output',@badrowcount output, @normalrowcount output,@maxlength output      
      print '表名:[' +  @tableName  + '] 列名:[' +  @columnName +']'
      print '包含字符串行數:'   + cast (@badrowcount as varchar(20))
      print '不包含字符串行數:' + cast (@normalrowcount as varchar(20))
      print '本列最長字符串長度:' + cast (@maxlength as varchar(20))
      print ''
     
   end
   close cur1
   deallocate cur1
  
   fetch next from cur into @tableName,@tbID
end
close cur
deallocate cur
print '數據庫共有'+convert(varchar(10),@iResult)+'條記錄被更新'


該文章在 2011/1/30 21:47:07 編輯過
關鍵字查詢
相關文章
正在查詢...
點晴ERP是一款針對中小制造業的專業生產管理軟件系統,系統成熟度和易用性得到了國內大量中小企業的青睞。
點晴PMS碼頭管理系統主要針對港口碼頭集裝箱與散貨日常運作、調度、堆場、車隊、財務費用、相關報表等業務管理,結合碼頭的業務特點,圍繞調度、堆場作業而開發的。集技術的先進性、管理的有效性于一體,是物流碼頭及其他港口類企業的高效ERP管理信息系統。
點晴WMS倉儲管理系統提供了貨物產品管理,銷售管理,采購管理,倉儲管理,倉庫管理,保質期管理,貨位管理,庫位管理,生產管理,WMS管理系統,標簽打印,條形碼,二維碼管理,批號管理軟件。
點晴免費OA是一款軟件和通用服務都免費,不限功能、不限時間、不限用戶的免費OA協同辦公管理系統。
Copyright 2010-2025 ClickSun All Rights Reserved