跨站腳本攻擊(XSS,Cross-site scripting)是最常見和基本的攻擊Web網(wǎng)站的方法。攻擊者可以在網(wǎng)頁上發(fā)布包含攻擊性代碼的數(shù)據(jù),當(dāng)瀏覽者看到此網(wǎng)頁時(shí),特定的腳本就會(huì)以瀏覽者用戶的身份和權(quán)限來執(zhí)行。通過XSS可以比較容易地修改用戶數(shù)據(jù)、竊取用戶信息以及造成其它類型的攻擊,例如:CSRF攻擊。惡意攻擊者往Web頁面里插入惡意html代碼,當(dāng)用戶瀏覽該頁之時(shí),嵌入其中Web里面的html代碼會(huì)被執(zhí)行,從而達(dá)到惡意攻擊用戶的特殊目的。 跨站腳本攻擊的解決思路 預(yù)防XSS攻擊的基本方法是:確保任何被輸出到HTML頁面中的數(shù)據(jù)以HTML的方式進(jìn)行轉(zhuǎn)義(HTML escape)。例如PHP輸出: <textarea><?php echo $articleText; ?></textarea> 如果這個(gè)articleText是由用戶自行輸入的,那么攻擊者很有可能輸入一段包含javascript惡意攻擊代碼的文本,使得最終輸出變成: <textarea> </textarea><script>alert('hello')'</script> </textarea> 上述代碼,在瀏覽器中渲染,將會(huì)執(zhí)行JavaScript代碼并在屏幕上alert hello。當(dāng)然這個(gè)代碼是無害的,但攻擊者完全可以創(chuàng)建一個(gè)JavaScript來修改用戶資料或者竊取cookie數(shù)據(jù)。解決方法很簡(jiǎn)單,就是將輸出的值的值進(jìn)行html escape,轉(zhuǎn)義后的輸出代碼如下 <textarea> </textarea><script>alert("hello!")</script> </textarea> 這樣就不會(huì)有任何危害了。 XSS危害 XSS其實(shí)是一門小眾但是熱門的攻擊技術(shù),之所以小眾,是由于費(fèi)時(shí)間、很難成功、攻擊無法自動(dòng)化和需要扎實(shí)的htmljs功底,但是由于漏洞存在廣泛,即使是大型互聯(lián)網(wǎng)公司的站點(diǎn)也很容易由于疏忽存在此漏洞,這就是最大的熱門。 跨站請(qǐng)求偽造攻擊(CSRF) 跨站請(qǐng)求偽造(CSRF,Cross-site request forgery)是另一種常見的攻擊。攻擊者通過各種方法偽造一個(gè)請(qǐng)求,模仿用戶提交表單的行為,從而達(dá)到修改用戶的數(shù)據(jù)或執(zhí)行特定任務(wù)的目的。 解決思路 1、增加攻擊的難度。GET請(qǐng)求是很容易創(chuàng)建的,用戶點(diǎn)擊一個(gè)鏈接就可以發(fā)起GET類型的請(qǐng)求,而POST請(qǐng)求相對(duì)比較難,攻擊者往往需要借助JavaScript才能實(shí)現(xiàn);因此,確保form表單或者服務(wù)端接口只接受POST類型的提交請(qǐng)求,可以增加系統(tǒng)的安全性。 2、對(duì)請(qǐng)求進(jìn)行認(rèn)證,確保該請(qǐng)求確實(shí)是用戶本人填寫表單或者發(fā)起請(qǐng)求并提交的,而不是第三者偽造的。 1)、用戶點(diǎn)擊鏈接(1) -> 網(wǎng)站顯示表單(2) -> 用戶填寫信息并提交(3) -> 網(wǎng)站接受用戶的數(shù)據(jù)并保存(4) 2)、直接跳到第2步(1) -> 偽造要修改的信息并提交(2) -> 網(wǎng)站接受攻擊者修改參數(shù)數(shù)據(jù)并保存(3) 3)、用戶點(diǎn)擊鏈接(1) -> 網(wǎng)站顯示表單,表單中包含特殊的token同時(shí)把token保存在session中(2) -> 用戶填寫信息并提交,同時(shí)發(fā)回token信息到服務(wù)端(3) -> 網(wǎng)站比對(duì)用戶發(fā)回的token和session中的token,應(yīng)該一致,則接受數(shù)據(jù),并保存 這樣,如果攻擊者偽造要修改的信息并提交,是沒辦法直接訪問到session的,所以也沒辦法拿到實(shí)際的token值;請(qǐng)求發(fā)送到服務(wù)端,服務(wù)端進(jìn)行token校驗(yàn)的時(shí)候,發(fā)現(xiàn)不一致,則直接拒絕此次請(qǐng)求。 |
免責(zé)聲明:本站部分文章和圖片均來自用戶投稿和網(wǎng)絡(luò)收集,旨在傳播知識(shí),文章和圖片版權(quán)歸原作者及原出處所有,僅供學(xué)習(xí)與參考,請(qǐng)勿用于商業(yè)用途,如果損害了您的權(quán)利,請(qǐng)聯(lián)系我們及時(shí)修正或刪除。謝謝!
始終以前瞻性的眼光聚焦站長(zhǎng)、創(chuàng)業(yè)、互聯(lián)網(wǎng)等領(lǐng)域,為您提供最新最全的互聯(lián)網(wǎng)資訊,幫助站長(zhǎng)轉(zhuǎn)型升級(jí),為互聯(lián)網(wǎng)創(chuàng)業(yè)者提供更加優(yōu)質(zhì)的創(chuàng)業(yè)信息和品牌營(yíng)銷服務(wù),與站長(zhǎng)一起進(jìn)步!讓互聯(lián)網(wǎng)創(chuàng)業(yè)者不再孤獨(dú)!
掃一掃,關(guān)注站長(zhǎng)網(wǎng)微信