Web攻擊
在互聯(lián)網(wǎng)中,攻擊手段數(shù)不勝數(shù)狡汉,我們平時(shí)不能以自己只是普通的開發(fā)程序員而不是安全方向的開發(fā)者為理由娄徊,而不去掌握基本的Web攻擊手段!我們來(lái)熟悉一下有哪幾種常見的Web攻擊手段
常見的Web攻擊手段主要有XSS 攻擊盾戴、CSRF 攻擊寄锐、SQL 注入攻擊、DDos 攻擊捻脖、文件漏洞攻擊等锐峭。這幾種攻擊方式的防護(hù)手段并不復(fù)雜中鼠,卻還是有很多企業(yè)遭受了該攻擊可婶,朔源到頭,還是因?yàn)槿藶榈氖韬觥?/p>
一援雇、XSS 攻擊
XSS攻擊的全稱為跨站腳本攻擊(Cross Site Scripting)
為什么不叫CSS矛渴,那是因?yàn)闉榱瞬桓鷮盈B樣式表(Cascading Style Sheet,CSS)混淆
XSS攻擊是Web應(yīng)用中最常見到的攻擊手段之一惫搏。
跨站腳本攻擊具温,關(guān)鍵詞腳本。
攻擊者常常在網(wǎng)頁(yè)中嵌入了惡意的腳本程序筐赔,當(dāng)用戶打開該網(wǎng)頁(yè)的時(shí)候铣猩,腳本程序便開始在客戶端的瀏覽器后臺(tái)執(zhí)行,常用于盜取客戶端的cookie茴丰,用戶名密碼达皿,下載執(zhí)行病毒的木馬程序,以及獲取客戶端Admin權(quán)限贿肩。
1峦椰、攻擊原理
前端常用表單的形式向后臺(tái)提交信息
<input type="text" name="username" value="cbuc" />
很普通的一段html代碼,向后臺(tái)提交username的信息汰规,正常情況下汤功,用戶一般會(huì)輸入自己的username,這個(gè)時(shí)候毫無(wú)問(wèn)題溜哮,但是在不正常的情況下滔金,用戶輸入的不是一個(gè)正常的字符串色解,而是"/><script> alert("bingo") </script><!-。按這個(gè)時(shí)候表單的內(nèi)容就會(huì)變成
<input type="text" name="username" value=""/><script> alert("bingo") </script><!-" />
這個(gè)時(shí)候向后臺(tái)提交參數(shù)餐茵,由于 username 的不合法性冒签,校驗(yàn)可能不通過(guò),服務(wù)端就重定向會(huì)該頁(yè)面钟病,并且?guī)弦陨蠀?shù)萧恕,這個(gè)時(shí)候頁(yè)面就會(huì)彈出一個(gè)警告框:
警告框問(wèn)題不是很大,是因?yàn)槿Q于這段腳本肠阱,如果攻擊者稍做修改票唆,那么性質(zhì)可能就不一樣了~
甚至,攻擊者可以對(duì)URL進(jìn)行操作屹徘,正常提交的地址為
www.xxx.com/login?username="/><script> alert("bingo") </script><!-"
攻擊者可以對(duì) URL 進(jìn)行編碼用來(lái)迷惑用戶:
www.xxx.com/login?username="%2F%3E%3Cscript%3E%20alert(%22bingo%22)%20%3C%2Fscript%3E%3C!-"
2走趋、防護(hù)手段
知道了如何攻擊,防護(hù)起來(lái)就不難噪伊,我們對(duì)癥下藥即可簿煌。既然輸入的參數(shù)不合法,我們就很有必要對(duì)入?yún)⑦M(jìn)行校驗(yàn)鉴吹,比如<姨伟、>、"豆励、"夺荒、'、'這些特殊字符我們很有必要進(jìn)行轉(zhuǎn)義與校驗(yàn)良蒸。
二技扼、CSRF 攻擊
CSRF攻擊全稱跨站請(qǐng)求偽造 (Cross site request forgery)。是一種對(duì)網(wǎng)站的惡意利用嫩痰,我們上面說(shuō)到的XSS攻擊是利用站點(diǎn)內(nèi)的信任用戶剿吻,自己去觸發(fā)腳本而導(dǎo)致的攻擊。而CSRF則是通過(guò)偽裝來(lái)自受信任用戶的請(qǐng)求去利用受攻擊的網(wǎng)站串纺。
CSRF 攻擊丽旅,關(guān)鍵詞:偽造。
攻擊這盜用了訪問(wèn)用戶的身份造垛,以訪問(wèn)者的名義向第三方網(wǎng)站發(fā)送惡意請(qǐng)求魔招,常用于利用訪問(wèn)者的身份發(fā)送消息,進(jìn)行交易轉(zhuǎn)賬以及盜取賬號(hào)五辽。
1办斑、攻擊原理
受害者首先在信任站點(diǎn)完成了登錄,并且生成了 Cookie,Cookie會(huì)在瀏覽器保存一定的時(shí)間乡翅。到這一步鳞疲,用戶如果在沒有登出信任站點(diǎn)的情況下,訪問(wèn)了惡意站點(diǎn)蠕蚜,這個(gè)時(shí)候惡意站點(diǎn)就會(huì)向信任站點(diǎn)發(fā)起請(qǐng)求尚洽,這個(gè)請(qǐng)求就會(huì)帶上以上生成的 Cookie,當(dāng)惡意請(qǐng)求來(lái)到信任站點(diǎn)靶累,信任站點(diǎn)看到請(qǐng)求攜帶的 Cookie腺毫,就會(huì)判斷該請(qǐng)求是受害者發(fā)出的。因此信任站點(diǎn)就會(huì)根據(jù)受害者的權(quán)限來(lái)完成惡意請(qǐng)求的指令挣柬,而這個(gè)指令可能是利用受害者的身份發(fā)送消息潮酒,轉(zhuǎn)賬支付等等操作,這樣惡意站點(diǎn)就達(dá)到了偽造受害者請(qǐng)求信任站點(diǎn)的目的邪蛔。
看到這個(gè)流程不知道你是否有所啟發(fā)急黎,不知道屏幕前的小伙伴是否有過(guò)QQ被盜用的經(jīng)歷,當(dāng)然侧到,有些盜用的手段與上面的流程是相似的勃教。
該攻擊手段在日常中十分常見。如果某個(gè)支付系統(tǒng)的轉(zhuǎn)賬地址為www.xxx.com/pay?accountNum=xxxx&money=xxx匠抗。其中accountNum為轉(zhuǎn)賬目的的賬戶故源,money為轉(zhuǎn)賬金額。那這個(gè)時(shí)候如果你剛巧登錄過(guò)了該支付系統(tǒng)戈咳,又沒有及時(shí)的登出心软,在訪問(wèn)惡意站點(diǎn)的時(shí)候,如果你點(diǎn)開了某張圖片著蛙,而圖片的地址為 :
<img src="www.xxx.com/pay?accountNum=xxxx&money=xxx" />
當(dāng)你美滋滋地瀏覽圖片的時(shí)候,卻不知道此時(shí)你的賬戶上已經(jīng)悄悄的少了指定金額耳贬!
這就是因?yàn)槟銢]有及時(shí)的登出支付系統(tǒng)踏堡,而又點(diǎn)擊了惡意站點(diǎn)的惡意鏈接,攜帶了你未過(guò)期的 Cookie咒劲,成功竊取了你的金額顷蟆。
2、防護(hù)手段
同樣知其癥下其藥腐魂!防護(hù)手段如下:
1)將 cookie 設(shè)置為 HttpOnly
CSRF攻擊的關(guān)鍵就在于利用了用戶未過(guò)期的Cookie帐偎,那么為了防止Cookie的盜取,就需要在Cookie中設(shè)置HttpOnly屬性蛔屹,這樣通過(guò)程序(XSS 攻擊)就無(wú)法讀取到Cookie信息削樊,避免了攻擊者偽造Cookie的情況出現(xiàn)。
2)增加 token
該防護(hù)手段還是針對(duì)Cookie的盜取,由于請(qǐng)求中所有的用戶驗(yàn)證信息都存放于Cookie中漫贞,因?yàn)槲覀兊钟?b>CSRF的關(guān)鍵就在于:如何在請(qǐng)求中放入攻擊者所不能偽造的信息甸箱,并且該信息不能存放在Cookie中。那么我們就可以在請(qǐng)求返回中加入一個(gè)隨機(jī)生成的token迅脐,當(dāng)請(qǐng)求來(lái)到時(shí)進(jìn)行token的校驗(yàn)芍殖,如果校驗(yàn)不通過(guò)則認(rèn)為是CSRF攻擊而拒絕該請(qǐng)求。
3)通過(guò) Referer
根據(jù)HTTP協(xié)議谴蔑,在HTTP請(qǐng)求頭上有一個(gè)字段叫做referer豌骏,它記錄了該Http請(qǐng)求的來(lái)源地址。在通常情況下隐锭,訪問(wèn)一個(gè)安全受限的頁(yè)面的請(qǐng)求都來(lái)自同一個(gè)網(wǎng)站肯适。
在CSRF中惡意請(qǐng)求是從惡意站點(diǎn)發(fā)出的,因此要防御CSRF攻擊成榜,需要對(duì)每一個(gè)請(qǐng)求驗(yàn)證其referer值即可框舔。
三、SQL 注入攻擊
SQL注入是程序員最經(jīng)常遇到的赎婚,所謂SQL注入刘绣,就是通過(guò)把SQL命令偽裝成正常的請(qǐng)求參數(shù),傳遞到服務(wù)端挣输,欺騙服務(wù)器最終執(zhí)行惡意的SQL命令纬凤,達(dá)到入侵的目的。攻擊者常常利用SQL注入的漏洞撩嚼,來(lái)查詢非授權(quán)的關(guān)鍵信息停士,修改數(shù)據(jù)庫(kù)服務(wù)器的數(shù)據(jù),改變表結(jié)構(gòu)完丽,危害極大恋技!