成人AV在线无码|婷婷五月激情色,|伊人加勒比二三四区|国产一区激情都市|亚洲AV无码电影|日av韩av无码|天堂在线亚洲Av|无码一区二区影院|成人无码毛片AV|超碰在线看中文字幕

Web的脆弱性:各種注入、攻擊

SQL 注入所謂SQL 注入,就是通過(guò)把SQL 命令插入到Web 表單遞交或輸入域名或頁(yè)面請(qǐng)求的查詢字符串,最終達(dá)到欺騙服務(wù)器執(zhí)行惡意的SQL 命令。通過(guò)一下的例子更形象的了解SQL 注入:有一個(gè)Lo

SQL 注入

所謂SQL 注入,就是通過(guò)把SQL 命令插入到Web 表單遞交或輸入域名或頁(yè)面請(qǐng)求的查詢字符串,最終達(dá)到欺騙服務(wù)器執(zhí)行惡意的SQL 命令。

通過(guò)一下的例子更形象的了解SQL 注入:

有一個(gè)Login 畫面,在這個(gè)Login 畫面上有兩個(gè)文本框分別用來(lái)輸入用戶名和密碼,當(dāng)用戶點(diǎn)了登錄按鈕的時(shí)候,會(huì)對(duì)輸入的用戶名和密碼進(jìn)行驗(yàn)證。驗(yàn)證的SQL 語(yǔ)句如下: select * from student where username='輸入的用戶名' and password='輸入的密碼' 如果能夠檢索到數(shù)據(jù),說(shuō)明驗(yàn)證通過(guò),否則驗(yàn)證不通過(guò)。

如果用戶在用戶名文本框中輸入 ' or '1' = '1' or '1' = '1,則驗(yàn)證的SQL 語(yǔ)句變成:

select * from student where username='' or '1' = '1' or '1' = '1' and password=''

如果用戶在密碼文本框中輸入 1' or '1' = '1,則驗(yàn)證的SQL 語(yǔ)句變成:

select * from student where username='' and password='1' or '1'='1'

以上兩個(gè)SQL 語(yǔ)句的where 條件永遠(yuǎn)是成立的,所以驗(yàn)證永遠(yuǎn)是有效的。

如果在用戶名文本框中輸入 tom' ; drop table student-- ,則SQL 語(yǔ)句變成:

[sql] view plaincopyprint?

1. select * from student where username='tom' ; drop table student--' and password='' 這樣就變成的兩條SQL 語(yǔ)句,執(zhí)行完查詢操作,接著直接把student 表給刪除了(雙連接符表示注釋)

如何防止SQL 注入:

1. 永遠(yuǎn)不要信任用戶的輸入。對(duì)用戶的輸入進(jìn)行校驗(yàn),可以通過(guò)正則表達(dá)式,或限制長(zhǎng)度;對(duì)單引號(hào)和雙"-" 進(jìn)行轉(zhuǎn)換等。

2. 永遠(yuǎn)不要使用動(dòng)態(tài)拼裝sql ,可以使用參數(shù)化的sql 或者直接使用存儲(chǔ)過(guò)程進(jìn)行數(shù)據(jù)查詢存取

3. 永遠(yuǎn)不要使用管理員權(quán)限的數(shù)據(jù)庫(kù)連接,為每個(gè)應(yīng)用使用單獨(dú)的權(quán)限有限的數(shù)據(jù)庫(kù)連接

4. 不要把機(jī)密信息直接存放,加密或者h(yuǎn)ash 掉密碼和敏感的信息

5. 應(yīng)用的異常信息應(yīng)該給出盡可能少的提示,最好使用自定義的錯(cuò)誤信息對(duì)原始錯(cuò)誤信息進(jìn)行包裝

6. 采用一些工具或網(wǎng)絡(luò)平臺(tái)檢測(cè)是否存在SQL 注入

OS 命令注入

OS 命令注入和SQL 注入差不多,只不過(guò)SQL 注入是針對(duì)數(shù)據(jù)庫(kù)的,而OS 命令注入是針對(duì)操作系統(tǒng)的。OS 命令注入即能夠在服務(wù)器上執(zhí)行任意命令。

如何防止OS 命令注入:

1. 不要調(diào)用外部程序。舉個(gè)例子,在UNIX 系統(tǒng)上,有一個(gè)叫CGI 的程序,可以執(zhí)行sendmail 命令來(lái)發(fā)送郵件。也許你的web 應(yīng)用程序也有發(fā)送郵件的功能,通過(guò)直接調(diào)用

,

CGI 程序發(fā)送郵件非常的簡(jiǎn)單,但是不要這樣做,因?yàn)樵趫?zhí)行sendmail 命令的同時(shí),也會(huì)混雜進(jìn)其他OS 命令,正確的做法是使用發(fā)送郵件的library 。

2. 過(guò)濾調(diào) 、; ,[ ,] ,| ,< ,> , 之類的符號(hào)

3. 設(shè)置用戶的權(quán)限

XSS 跨站腳本攻擊

XSS 跨站腳本攻擊指攻擊者在網(wǎng)頁(yè)中嵌入客戶端腳本(例如JavaScript) ,當(dāng)用戶瀏覽此網(wǎng)頁(yè)時(shí),腳本就會(huì)在用戶的瀏覽器上執(zhí)行,從而達(dá)到攻擊者的目的,比如獲取用戶的Cookie ,導(dǎo)航到惡意網(wǎng)站,攜帶木馬等。

XSS 攻擊場(chǎng)景有以下兩個(gè)方面:

1. Dom-Based XSS 漏洞。攻擊過(guò)程如下

Tom 發(fā)現(xiàn)了Victim.com 中的Search.asp 頁(yè)面有XSS 漏洞,Search.asp 的代碼如下:

1.

2.

3.

4. Results for

5. ...

6.

7.

Tom 先建立一個(gè)網(wǎng)站http://badguy.com,用來(lái)接收“偷”來(lái)的信息。然后Tom 構(gòu)造一個(gè)惡意的url(如下) ,通過(guò)某種方式(郵件,QQ) 發(fā)給Monica

Monica 點(diǎn)擊了這個(gè)URL ,嵌入在URL 中的惡意Javascript 代碼就會(huì)在Monica 的瀏覽器中執(zhí)行,那么Monica 在victim.com 網(wǎng)站的cookie ,就會(huì)被發(fā)送到badguy 網(wǎng)站中,這樣Monica 在victim.com 的信息就被Tom 盜了

2. Stored XSS(存儲(chǔ)式XSS 漏洞) 。該類型是應(yīng)用廣泛而且有可能影響大Web 服務(wù)器自身安全的漏洞,攻擊者將攻擊腳本上傳到Web 服務(wù)器上,使得所有訪問(wèn)該頁(yè)面的用戶都面臨信息泄露的可能。 攻擊過(guò)程如下

Alex 發(fā)現(xiàn)了網(wǎng)站A 上有一個(gè)XSS 漏洞,該漏洞允許將攻擊代碼保存在數(shù)據(jù)庫(kù)中,于是Alex 發(fā)布了一篇文章,文章中嵌入了惡意JavaScript 代碼。其他人如Monica 訪問(wèn)這片文章的時(shí)候,嵌入在文章中的惡意Javascript 代碼就會(huì)在Monica 的瀏覽器中執(zhí)行,其會(huì)話cookie 或者其他信息將被Alex 盜走

Dom-Based XSS漏洞威脅用戶個(gè)體,而存儲(chǔ)式XSS 漏洞所威脅的對(duì)象將是大量的用戶。 如何防止XSS 跨站腳本攻擊:

原則:不相信用戶輸入的數(shù)據(jù)

注意:攻擊代碼不一定在中

1. 將重要的cookie 標(biāo)記為http only ,這樣的話Javascript 中的document.cookie 語(yǔ)句就不能獲取到cookie 了

2. 只允許用戶輸入我們期望的數(shù)據(jù)。例如:年齡的textbox 中,只允許用戶輸入數(shù)字,而數(shù)字之外的字符都過(guò)濾掉

3. 對(duì)數(shù)據(jù)進(jìn)行Html Encode 處理。< 轉(zhuǎn)化為 <、> 轉(zhuǎn)化為 >、& 轉(zhuǎn)化為 &、' 轉(zhuǎn)化為 '、" 轉(zhuǎn)化為 "、空格 轉(zhuǎn)化為

,

4. 過(guò)濾或移除特殊的Html 標(biāo)簽。例如:)

CSRF 跨站請(qǐng)求偽造

CSRF (XSRF )盡管聽(tīng)起來(lái)很想XSS 跨站腳本攻擊,但是它于XSS 完全不同。XSS 是利用站點(diǎn)內(nèi)的信任用戶,而CSRF 則是通過(guò)偽裝來(lái)自受信任用戶的請(qǐng)求來(lái)利用受信任的站點(diǎn)。 與XSS 相比,CSRF 攻擊不大流行和難以防范,所以比XSS 更具危險(xiǎn)性。

以下是一個(gè)CSRF 的例子

受害者 Bob 在銀行有一筆存款,通過(guò)對(duì)銀行的網(wǎng)站發(fā)送請(qǐng)求http://bank.example/withdraw?account=bob&amount=1000000&for=bob2可以使 Bob 把 1000000 的存款轉(zhuǎn)到 bob2 的賬號(hào)下。通常情況下,該請(qǐng)求發(fā)送到網(wǎng)站后,服務(wù)器會(huì)先驗(yàn)證該請(qǐng)求是否來(lái)自一個(gè)合法的 session ,并且該 session 的用戶 Bob 已經(jīng)成功登陸。

黑客 Mallory 自己在該銀行也有賬戶,他知道上文中的 URL 可以把錢進(jìn)行轉(zhuǎn)帳操作。Mallory 可以自己發(fā)送一個(gè)請(qǐng)求給銀行:http://bank.example/withdraw?account=bob& amount=1000000&for=Mallory。但是這個(gè)請(qǐng)求來(lái)自 Mallory 而非 Bob ,他不能通過(guò)安全認(rèn)證,因此該請(qǐng)求不會(huì)起作用。

這時(shí),Mallory 想到使用 CSRF 的攻擊方式,他先自己做一個(gè)網(wǎng)站,在網(wǎng)站中放入如下代碼:。并且通過(guò)廣告等誘使 Bob 來(lái)訪問(wèn)他的網(wǎng)站。當(dāng) Bob 訪問(wèn)該網(wǎng)站時(shí),上述 url 就會(huì)從 Bob 的瀏覽器發(fā)向銀行,而這個(gè)請(qǐng)求會(huì)附帶 Bob 瀏覽器中的 cookie 一起發(fā)向銀行服務(wù)器。大多數(shù)情況下,該請(qǐng)求會(huì)失敗,因?yàn)樗?Bob 的認(rèn)證信息。但是,如果 Bob 當(dāng)時(shí)恰巧剛訪問(wèn)他的銀行后不久,他的瀏覽器與銀行網(wǎng)站之間的 session 尚未過(guò)期,瀏覽器的 cookie 之中含有 Bob 的認(rèn)證信息。這時(shí),悲劇發(fā)生了,這個(gè) url 請(qǐng)求就會(huì)得到響應(yīng),錢將從 Bob 的賬號(hào)轉(zhuǎn)移到 Mallory 的賬號(hào),而 Bob 當(dāng)時(shí)毫不知情。等以后 Bob 發(fā)現(xiàn)賬戶錢少了,即使他去銀行查詢?nèi)罩?,他也只能發(fā)現(xiàn)確實(shí)有一個(gè)來(lái)自于他本人的合法請(qǐng)求轉(zhuǎn)移了資金,沒(méi)有任何被攻擊的痕跡。而 Mallory 則可以拿到錢后逍遙法外。

如何防止CSRF 跨站請(qǐng)求偽造:

1. 對(duì)于web 站點(diǎn),將持久化的授權(quán)方法(例如cookie 或者HTTP 授權(quán))切換為瞬時(shí)的授權(quán)方法(在每個(gè)form 中提供隱藏field )。

,

2. “雙提交”cookie。此方法只工作于Ajax 請(qǐng)求,但它能夠作為無(wú)需改變大量form 的全局修正方法。如果某個(gè)授權(quán)的cookie 在form post 之前正被JavaScript 代碼讀取,那么限制跨域規(guī)則將被應(yīng)用。什么叫限制跨域規(guī)則呢?限制跨域規(guī)則就是:如果服務(wù)器需要在Post 請(qǐng)求體或者URL 中包含授權(quán)cookie 的請(qǐng)求,那么這個(gè)請(qǐng)求必須來(lái)自于受信任的域,因?yàn)槠渌蚴遣荒軓男湃斡蜃x取cookie 的。上面那個(gè)例子的受信任域就是銀行網(wǎng)站的某個(gè)域,而Mallory 發(fā)給Bob 的鏈接不是受信任的域。

3. 使用Post 代替Get 。Post 方式不會(huì)在web 服務(wù)器和代理服務(wù)器日志中留下數(shù)據(jù)尾巴,然而Get 方式卻會(huì)留下數(shù)據(jù)尾巴。

4. 以上三點(diǎn)都是正對(duì)web 站點(diǎn)的防御手段,第4點(diǎn)是從用戶的角度的防御手段。通過(guò)在瀏覽其它站點(diǎn)前登出站點(diǎn)或者在瀏覽器會(huì)話結(jié)束后清理瀏覽器的cookie 來(lái)防止CSRF 攻擊。

目錄遍歷漏洞

目錄遍歷漏洞在國(guó)內(nèi)外有不同的叫法(信息泄露漏洞、非授權(quán)文件包含漏洞、等等)。目錄遍歷漏洞就是在程序中沒(méi)有過(guò)濾用戶輸入的../和./之類的目錄跳轉(zhuǎn)符,導(dǎo)致惡意用戶可以通過(guò)提交目錄跳轉(zhuǎn)來(lái)遍歷服務(wù)器上的任意文件,其危害可想而知。

如何防止目錄遍歷漏洞:

1. 權(quán)限控制

2. 對(duì)包含了惡意的符號(hào)或者空字節(jié)進(jìn)行拒絕

3. 使用絕對(duì)路徑 參數(shù)來(lái)控制訪問(wèn)目錄,使其即使是越權(quán)或者跨越目錄也是在指定的目錄下

參數(shù)篡改

參數(shù)值竄改是網(wǎng)絡(luò)攻擊的一種形式,其中在URL 中的某些參數(shù)或由用戶輸入的網(wǎng)頁(yè)形式領(lǐng)域數(shù)據(jù)都在沒(méi)有得到用戶授權(quán)的情況下改變了。這導(dǎo)致瀏覽器指向一個(gè)不是用戶想去的鏈接、網(wǎng)頁(yè)或網(wǎng)站(盡管對(duì)隨機(jī)觀測(cè)者來(lái)說(shuō)它們看上去幾乎一樣)。參數(shù)值篡改被犯罪者用來(lái)獲取個(gè)人或商業(yè)信息。

如何防止參數(shù)篡改:

1. 對(duì)所有參數(shù)值進(jìn)行驗(yàn)證

2. 根據(jù)session id進(jìn)行遷移,參數(shù)使用服務(wù)器端的值

會(huì)話劫持

會(huì)話劫持就是在一次正常的會(huì)話過(guò)程當(dāng)中,攻擊者作為第三方參與到其中,他可以在正常數(shù)據(jù)包中插入惡意數(shù)據(jù),也可以在雙方的會(huì)話當(dāng)中進(jìn)行監(jiān)聽(tīng),甚至可以是代替某一方主機(jī)接管會(huì)話。

我們可以把會(huì)話劫持攻擊分為兩種類型:1)中間人攻擊(Man In The Middle,簡(jiǎn)稱MITM) ,

2)注射式攻擊(Injection )

中間人攻擊:簡(jiǎn)而言之,所謂的MITM 攻擊就是通過(guò)攔截正常的網(wǎng)絡(luò)通信數(shù)據(jù),并進(jìn)行數(shù)據(jù)篡改和嗅探,而通信的雙方卻毫不知情

注射式攻擊:這種方式的會(huì)話劫持比中間人攻擊實(shí)現(xiàn)起來(lái)簡(jiǎn)單一些,它不會(huì)改變會(huì)話雙方的通訊流,而是在雙方正常的通訊流插入惡意數(shù)據(jù)

還可以把會(huì)話劫持攻擊分為兩種形式:1)被動(dòng)劫持,2)主動(dòng)劫持

被動(dòng)劫持:在后臺(tái)監(jiān)視雙方會(huì)話的數(shù)據(jù)流,叢中獲得敏感數(shù)據(jù)

主動(dòng)劫持:將會(huì)話當(dāng)中的某一臺(tái)主機(jī)“踢”下線,然后由攻擊者取代并接管會(huì)話,這種攻擊方法危害非常大,攻擊者可以做很多事情

如何防止會(huì)話劫持:

,

1. 限制入網(wǎng)的連接

2. 設(shè)置你的網(wǎng)絡(luò)拒絕假冒本地地址從互聯(lián)網(wǎng)上發(fā)來(lái)的數(shù)據(jù)包

3. 加密也是有幫助的。FTP 和Telnet 協(xié)議是最容易受到攻擊的。SSH 是一種很好的替代方法

標(biāo)簽: