sqlserver防篡改,數(shù)據(jù)庫如何防篡改

安全系統(tǒng)或數(shù)據(jù)被篡改怎么解決?

對數(shù)據(jù)庫版本出現(xiàn)的漏洞針對數(shù)據(jù)庫廠商打上補(bǔ)丁,防止其版本漏洞被黑客利用做好系統(tǒng)安全工作,經(jīng)常查看數(shù)據(jù)庫操作日志記錄,不要以為麻煩就不處理,等出現(xiàn)紕漏悔之晚矣。

成都創(chuàng)新互聯(lián)-專業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設(shè)、高性價(jià)比江源網(wǎng)站開發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫,直接使用。一站式江源網(wǎng)站制作公司更省心,省錢,快速模板網(wǎng)站建設(shè)找我們,業(yè)務(wù)覆蓋江源地區(qū)。費(fèi)用合理售后完善,10余年實(shí)體公司更值得信賴。

無論是數(shù)據(jù)庫的默認(rèn)端口3306或者是sqlserver1433端口都要做端口的安全策略,限制對外開放?;蛘呤褂胮hpmyadmin對數(shù)據(jù)庫進(jìn)行管理等操作,網(wǎng)站的數(shù)據(jù)庫調(diào)用賬戶使用普通權(quán)限賬戶,只有讀寫,增加刪除等操作,沒有管理員權(quán)限,時(shí)刻對數(shù)據(jù)庫進(jìn)行備份,設(shè)置數(shù)據(jù)庫備份計(jì)劃,每小時(shí)都可以設(shè)置備份到指定的目錄,這樣假設(shè)你的數(shù)據(jù)庫被黑了,還可以通過備份的數(shù)據(jù)來恢復(fù)。

由計(jì)算機(jī)或存儲系統(tǒng)故障或存儲系統(tǒng)故障引起的數(shù)據(jù)變化,以及由惡意個(gè)人或惡意軟件引起的數(shù)據(jù)變化。欺詐數(shù)據(jù)修改也可能損害完整性。

國防部在修改重要數(shù)據(jù)時(shí)使用版本控制軟件維護(hù)其存檔副本。確保所有數(shù)據(jù)都受到防病毒軟件的保護(hù)。

維護(hù)基于角色的所有數(shù)據(jù)訪問控制,基于最小權(quán)限原則,已知的工作功能和業(yè)務(wù)需求。測試使用完整性檢查軟件監(jiān)控和報(bào)告關(guān)鍵數(shù)據(jù)的變化。

威懾保持對獲取和管理數(shù)據(jù)的個(gè)人的教育和人事培訓(xùn)。確保數(shù)據(jù)所有者負(fù)責(zé)授權(quán)、控制數(shù)據(jù)和數(shù)據(jù)丟失。關(guān)于殘余風(fēng)險(xiǎn)損害或破壞的數(shù)據(jù)可能會造成重大問題,因?yàn)橛行Ш涂煽康臄?shù)據(jù)是任何計(jì)算系統(tǒng)的基礎(chǔ)確保。

如何來防止sql server被遠(yuǎn)程字典攻擊

一、 SQL注入攻擊的簡單示例。

statement := "SELECT * FROM Users WHERE Value= " + a_variable + "

上面這條語句是很普通的一條SQL語句,他主要實(shí)現(xiàn)的功能就是讓用戶輸入一個(gè)員工編號然后查詢處這個(gè)員工的信息。但是若這條語句被不法攻擊者改裝過后,就可能成為破壞數(shù)據(jù)的黑手。如攻擊者在輸入變量的時(shí)候,輸入以下內(nèi)容SA001’;drop table c_order--。那么以上這條SQL語句在執(zhí)行的時(shí)候就變?yōu)榱薙ELECT * FROM Users WHERE Value= ‘SA001’;drop table c_order--。

這條語句是什么意思呢?‘SA001’后面的分號表示一個(gè)查詢的結(jié)束和另一條語句的開始。c_order后面的雙連字符 指示當(dāng)前行余下的部分只是一個(gè)注釋,應(yīng)該忽略。如果修改后的代碼語法正確,則服務(wù)器將執(zhí)行該代碼。系統(tǒng)在處理這條語句時(shí),將首先執(zhí)行查詢語句,查到用戶編號為SA001 的用戶信息。然后,數(shù)據(jù)將刪除表C_ORDER(如果沒有其他主鍵等相關(guān)約束,則刪除操作就會成功)。只要注入的SQL代碼語法正確,便無法采用編程方式來檢測篡改。因此,必須驗(yàn)證所有用戶輸入,并仔細(xì)檢查在您所用的服務(wù)器中執(zhí)行構(gòu)造 SQL命令的代碼。

二、 SQL注入攻擊原理。

可見SQL注入攻擊的危害性很大。在講解其防止辦法之前,數(shù)據(jù)庫管理員有必要先了解一下其攻擊的原理。這有利于管理員采取有針對性的防治措施。

SQL注入是目前比較常見的針對數(shù)據(jù)庫的一種攻擊方式。在這種攻擊方式中,攻擊者會將一些惡意代碼插入到字符串中。然后會通過各種手段將該字符串傳遞到SQLServer數(shù)據(jù)庫的實(shí)例中進(jìn)行分析和執(zhí)行。只要這個(gè)惡意代碼符合SQL語句的規(guī)則,則在代碼編譯與執(zhí)行的時(shí)候,就不會被系統(tǒng)所發(fā)現(xiàn)。

SQL注入式攻擊的主要形式有兩種。一是直接將代碼插入到與SQL命令串聯(lián)在一起并使得其以執(zhí)行的用戶輸入變量。上面筆者舉的例子就是采用了這種方法。由于其直接與SQL語句捆綁,故也被稱為直接注入式攻擊法。二是一種間接的攻擊方法,它將惡意代碼注入要在表中存儲或者作為原書據(jù)存儲的字符串。在存儲的字符串中會連接到一個(gè)動態(tài)的SQL命令中,以執(zhí)行一些惡意的SQL代碼。

注入過程的工作方式是提前終止文本字符串,然后追加一個(gè)新的命令。如以直接注入式攻擊為例。就是在用戶輸入變量的時(shí)候,先用一個(gè)分號結(jié)束當(dāng)前的語句。然后再插入一個(gè)惡意SQL語句即可。由于插入的命令可能在執(zhí)行前追加其他字符串,因此攻擊者常常用注釋標(biāo)記“—”來終止注入的字符串。執(zhí)行時(shí),系統(tǒng)會認(rèn)為此后語句位注釋,故后續(xù)的文本將被忽略,不背編譯與執(zhí)行。

三、 SQL注入式攻擊的防治。

既然SQL注入式攻擊的危害這么大,那么該如何來防治呢?下面這些建議或許對數(shù)據(jù)庫管理員防治SQL注入式攻擊有一定的幫助。

1、 普通用戶與系統(tǒng)管理員用戶的權(quán)限要有嚴(yán)格的區(qū)分。

如果一個(gè)普通用戶在使用查詢語句中嵌入另一個(gè)Drop Table語句,那么是否允許執(zhí)行呢?由于Drop語句關(guān)系到數(shù)據(jù)庫的基本對象,故要操作這個(gè)語句用戶必須有相關(guān)的權(quán)限。在權(quán)限設(shè)計(jì)中,對于終端用戶,即應(yīng)用軟件的使用者,沒有必要給他們數(shù)據(jù)庫對象的建立、刪除等權(quán)限。那么即使在他們使用SQL語句中帶有嵌入式的惡意代碼,由于其用戶權(quán)限的限制,這些代碼也將無法被執(zhí)行。故應(yīng)用程序在設(shè)計(jì)的時(shí)候,最好把系統(tǒng)管理員的用戶與普通用戶區(qū)分開來。如此可以最大限度的減少注入式攻擊對數(shù)據(jù)庫帶來的危害。

2、 強(qiáng)迫使用參數(shù)化語句。

如果在編寫SQL語句的時(shí)候,用戶輸入的變量不是直接嵌入到SQL語句。而是通過參數(shù)來傳遞這個(gè)變量的話,那么就可以有效的防治SQL注入式攻擊。也就是說,用戶的輸入絕對不能夠直接被嵌入到SQL語句中。與此相反,用戶的輸入的內(nèi)容必須進(jìn)行過濾,或者使用參數(shù)化的語句來傳遞用戶輸入的變量。參數(shù)化的語句使用參數(shù)而不是將用戶輸入變量嵌入到SQL語句中。采用這種措施,可以杜絕大部分的SQL注入式攻擊。不過可惜的是,現(xiàn)在支持參數(shù)化語句的數(shù)據(jù)庫引擎并不多。不過數(shù)據(jù)庫工程師在開發(fā)產(chǎn)品的時(shí)候要盡量采用參數(shù)化語句。

3、 加強(qiáng)對用戶輸入的驗(yàn)證。

總體來說,防治SQL注入式攻擊可以采用兩種方法,一是加強(qiáng)對用戶輸入內(nèi)容的檢查與驗(yàn)證;二是強(qiáng)迫使用參數(shù)化語句來傳遞用戶輸入的內(nèi)容。在SQLServer數(shù)據(jù)庫中,有比較多的用戶輸入內(nèi)容驗(yàn)證工具,可以幫助管理員來對付SQL注入式攻擊。測試字符串變量的內(nèi)容,只接受所需的值。拒絕包含二進(jìn)制數(shù)據(jù)、轉(zhuǎn)義序列和注釋字符的輸入內(nèi)容。這有助于防止腳本注入,防止某些緩沖區(qū)溢出攻擊。測試用戶輸入內(nèi)容的大小和數(shù)據(jù)類型,強(qiáng)制執(zhí)行適當(dāng)?shù)南拗婆c轉(zhuǎn)換。這即有助于防止有意造成的緩沖區(qū)溢出,對于防治注入式攻擊有比較明顯的效果。

如可以使用存儲過程來驗(yàn)證用戶的輸入。利用存儲過程可以實(shí)現(xiàn)對用戶輸入變量的過濾,如拒絕一些特殊的符號。如以上那個(gè)惡意代碼中,只要存儲過程把那個(gè)分號過濾掉,那么這個(gè)惡意代碼也就沒有用武之地了。在執(zhí)行SQL語句之前,可以通過數(shù)據(jù)庫的存儲過程,來拒絕接納一些特殊的符號。在不影響數(shù)據(jù)庫應(yīng)用的前提下,應(yīng)該讓數(shù)據(jù)庫拒絕包含以下字符的輸入。如分號分隔符,它是SQL注入式攻擊的主要幫兇。如注釋分隔符。注釋只有在數(shù)據(jù)設(shè)計(jì)的時(shí)候用的到。一般用戶的查詢語句中沒有必要注釋的內(nèi)容,故可以直接把他拒絕掉,通常情況下這么做不會發(fā)生意外損失。把以上這些特殊符號拒絕掉,那么即使在SQL語句中嵌入了惡意代碼,他們也將毫無作為。

故始終通過測試類型、長度、格式和范圍來驗(yàn)證用戶輸入,過濾用戶輸入的內(nèi)容。這是防止SQL注入式攻擊的常見并且行之有效的措施。

4、 多多使用SQL Server數(shù)據(jù)庫自帶的安全參數(shù)。

為了減少注入式攻擊對于SQL Server數(shù)據(jù)庫的不良影響,在SQLServer數(shù)據(jù)庫專門設(shè)計(jì)了相對安全的SQL參數(shù)。在數(shù)據(jù)庫設(shè)計(jì)過程中,工程師要盡量采用這些參數(shù)來杜絕惡意的SQL注入式攻擊。

如在SQL Server數(shù)據(jù)庫中提供了Parameters集合。這個(gè)集合提供了類型檢查和長度驗(yàn)證的功能。如果管理員采用了Parameters這個(gè)集合的話,則用戶輸入的內(nèi)容將被視為字符值而不是可執(zhí)行代碼。即使用戶輸入的內(nèi)容中含有可執(zhí)行代碼,則數(shù)據(jù)庫也會過濾掉。因?yàn)榇藭r(shí)數(shù)據(jù)庫只把它當(dāng)作普通的字符來處理。使用Parameters集合的另外一個(gè)優(yōu)點(diǎn)是可以強(qiáng)制執(zhí)行類型和長度檢查,范圍以外的值將觸發(fā)異常。如果用戶輸入的值不符合指定的類型與長度約束,就會發(fā)生異常,并報(bào)告給管理員。如上面這個(gè)案例中,如果員工編號定義的數(shù)據(jù)類型為字符串型,長度為10個(gè)字符。而用戶輸入的內(nèi)容雖然也是字符類型的數(shù)據(jù),但是其長度達(dá)到了20個(gè)字符。則此時(shí)就會引發(fā)異常,因?yàn)橛脩糨斎氲膬?nèi)容長度超過了數(shù)據(jù)庫字段長度的限制。

5、 多層環(huán)境如何防治SQL注入式攻擊?

在多層應(yīng)用環(huán)境中,用戶輸入的所有數(shù)據(jù)都應(yīng)該在驗(yàn)證之后才能被允許進(jìn)入到可信區(qū)域。未通過驗(yàn)證過程的數(shù)據(jù)應(yīng)被數(shù)據(jù)庫拒絕,并向上一層返回一個(gè)錯誤信息。實(shí)現(xiàn)多層驗(yàn)證。對無目的的惡意用戶采取的預(yù)防措施,對堅(jiān)定的攻擊者可能無效。更好的做法是在用戶界面和所有跨信任邊界的后續(xù)點(diǎn)上驗(yàn)證輸入。如在客戶端應(yīng)用程序中驗(yàn)證數(shù)據(jù)可以防止簡單的腳本注入。但是,如果下一層認(rèn)為其輸入已通過驗(yàn)證,則任何可以繞過客戶端的惡意用戶就可以不受限制地訪問系統(tǒng)。故對于多層應(yīng)用環(huán)境,在防止注入式攻擊的時(shí)候,需要各層一起努力,在客戶端與數(shù)據(jù)庫端都要采用相應(yīng)的措施來防治SQL語句的注入式攻擊。

6、 必要的情況下使用專業(yè)的漏洞掃描工具來尋找可能被攻擊的點(diǎn)。

使用專業(yè)的漏洞掃描工具,可以幫助管理員來尋找可能被SQL注入式攻擊的點(diǎn)。不過漏洞掃描工具只能發(fā)現(xiàn)攻擊點(diǎn),而不能夠主動起到防御SQL注入攻擊的作用。當(dāng)然這個(gè)工具也經(jīng)常被攻擊者拿來使用。如攻擊者可以利用這個(gè)工具自動搜索攻擊目標(biāo)并實(shí)施攻擊。為此在必要的情況下,企業(yè)應(yīng)當(dāng)投資于一些專業(yè)的漏洞掃描工具。一個(gè)完善的漏洞掃描程序不同于網(wǎng)絡(luò)掃描程序,它專門查找數(shù)據(jù)庫中的SQL注入式漏洞。最新的漏洞掃描程序可以查找最新發(fā)現(xiàn)的漏洞。所以憑借專業(yè)的工具,可以幫助管理員發(fā)現(xiàn)SQL注入式漏洞,并提醒管理員采取積極的措施來預(yù)防SQL注入式攻擊。如果攻擊者能夠發(fā)現(xiàn)的SQL注入式漏洞數(shù)據(jù)庫管理員都發(fā)現(xiàn)了并采取了積極的措施堵住漏洞,那么攻擊者也就無從下手了。

java.lang.Error問題怎樣解決?

這是引入類型失敗的錯誤提示,

import org.wltea ,

說明你引入了某個(gè)jar 包或者類,但是沒有找到 ,就報(bào)錯了.

IK analyzer 中文分詞器 開源的項(xiàng)目 ,有源碼的.

把這個(gè)下載好就可以了。

一般有兩種常見的情況:

1、當(dāng)一個(gè) jar 文件的 MANIFEST.MF 中已經(jīng)標(biāo)記了 Sealed: true 時(shí),這個(gè) jar 內(nèi)所有的 java package 中的類必須來自這個(gè) jar 包,這是 JVM 的安全措施,配合數(shù)字簽名就能防止篡改,微軟就把它的 SQLServer 驅(qū)動程序簽名了。比如,JRE 的 rt.jar 就是 Sealed,所以你自己創(chuàng)建一個(gè)類 java.lang.MyClass 來運(yùn)行的話,JVM 是拒絕的。

通常情況下,如果你使用了基于動態(tài)代理的 AOP,比如 Hibernate 延遲加載或 Spring 的 AOP 就可能因?yàn)榕R時(shí)生成的一個(gè)子類本身生成在內(nèi)存中而不是來自某個(gè) jar 包,這時(shí)如果這個(gè) jar 包是 Sealed 就無法工作,比如 Microsoft SQLServer JDBC 驅(qū)動程序在 Sealed 時(shí)你用 Hibernate 的延遲加載就會出錯,因?yàn)?Hibernate 生成的代理類繼承了某個(gè) JDBC 驅(qū)動包內(nèi)的類但這個(gè)驅(qū)動包是 Sealed,生成的類的包名在驅(qū)動名的 jar 中就會出錯。

2、可能是類版本錯誤。這個(gè)錯誤是你說你當(dāng)前的某個(gè)類它引用到的其它類庫的版本與這個(gè)類在編譯時(shí)所用的版本不相同 ,比如:你的類 A 用了 c_1.0.jar 中的某個(gè)類,編譯之后拿到服務(wù)器上去用,但服務(wù)器上的只有 c_1.1.jar 這個(gè)類,它的版本與 c_1.0.jar 某個(gè)用到的類略有差異。

因此在 J2EE 開發(fā)中確保我們編譯時(shí)針對 API 或接口編程,不要針對實(shí)現(xiàn)類編程,否則不同的版本對你有很大影響,你必須在所有可能用到的服務(wù)器上針對性地測試才能發(fā)現(xiàn)問題。

如果你是使用類似 ?Eclipse 的開發(fā)工具,那么當(dāng)你要用到 jstl.jar , jsp.jar, servlet.jar , j2ee.jar 等服務(wù)器提供的 API 時(shí),我們不應(yīng)該把服務(wù)器上的 jar 復(fù)制到 WEB-INF/lib 下,而是應(yīng)該在 Eclipse ?的項(xiàng)目屬性的 Java Build Path 中 Add Library Server Runtime 或 User Library 來避免復(fù)制 jar。一旦復(fù)制了之后其它人在服務(wù)器配置變更后可能不知道你的類庫和服務(wù)器的類庫有什么差異。

數(shù)據(jù)庫被篡改導(dǎo)致軟件連接SQL失敗主要可能是通過什么方式?

按你所說,如果在無法進(jìn)入服務(wù)器,并且不修改SQL連接用戶的情況下,要么刪除了數(shù)據(jù)庫的表,但是你說用戶沒有DELETE權(quán)限,那么有可能你的數(shù)據(jù)庫并沒有被別人改。而是另一種方式,直接導(dǎo)致數(shù)據(jù)庫崩潰。

例如DDOS、FORK炸彈,通過短時(shí)間超高流量高延時(shí)的連接請求,使數(shù)據(jù)庫連接超限,就和你的計(jì)算機(jī)因?yàn)閮?nèi)存占滿而死機(jī)一樣。你只需要重啟數(shù)據(jù)庫即可恢復(fù)。如果要防止這種流量攻擊,你需要在數(shù)據(jù)庫設(shè)置一些連接限制,比如最長響應(yīng)時(shí)間、最大訪問數(shù)等。

網(wǎng)頁名稱:sqlserver防篡改,數(shù)據(jù)庫如何防篡改
分享鏈接:http://muchs.cn/article26/phiojg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供、用戶體驗(yàn)自適應(yīng)網(wǎng)站、App設(shè)計(jì)、搜索引擎優(yōu)化、網(wǎng)站制作

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

綿陽服務(wù)器托管