XSS跨站腳本攻擊問題和原理詳解

跨站腳本攻擊(XSS,Cross-site scripting)是最常見和基本的攻擊Web網站的方法。攻擊者可以在網頁上發(fā)布包含攻擊性代碼的數據,當瀏覽者看到此網頁時,特定的腳本就會以瀏覽者用戶的身份和權限來執(zhí)行。通過XSS可以比較容易地修改用戶數據、竊取用戶信息以及造成其它類型的攻擊,例如:CSRF攻擊。惡意攻擊者往Web頁面里插入惡意html代碼,當用戶瀏覽該頁之時,嵌入其中Web里面的html代碼會被執(zhí)行,從而達到惡意攻擊用戶的特殊目的。
跨站腳本攻擊的解決思路
預防XSS攻擊的基本方法是:確保任何被輸出到HTML頁面中的數據以HTML的方式進行轉義(HTML escape)。例如PHP輸出:
- <textarea><?php echo $articleText; ?></textarea>
如果這個articleText是由用戶自行輸入的,那么攻擊者很有可能輸入一段包含javascript惡意攻擊代碼的文本,使得最終輸出變成:
- <textarea>
- </textarea><script>alert('hello')'</script>
- </textarea>
上述代碼,在瀏覽器中渲染,將會執(zhí)行JavaScript代碼并在屏幕上alert hello。當然這個代碼是無害的,但攻擊者完全可以創(chuàng)建一個JavaScript來修改用戶資料或者竊取cookie數據。
解決方法很簡單,就是將輸出的值的值進行html escape,轉義后的輸出代碼如下
- <textarea>
- </textarea><script>alert("hello!")</script>
- </textarea>
這樣就不會有任何危害了。
XSS危害
XSS其實是一門小眾但是熱門的攻擊技術,之所以小眾,是由于費時間、很難成功、攻擊無法自動化和需要扎實的htmljs功底,但是由于漏洞存在廣泛,即使是大型互聯(lián)網公司的站點也很容易由于疏忽存在此漏洞,這就是最大的熱門。
其實無論是哪一種xss攻擊手段,其原理都是使用了“xss就是在頁面執(zhí)行你想要的js”,也就是說,只要遵循一個原則——后端永遠不信任前端輸入的任何信息,無論是輸入還是輸出,都對其進行html字符的轉義,那么漏洞就基本不存在了。
跨站請求偽造攻擊(CSRF)
跨站請求偽造(CSRF,Cross-site request forgery)是另一種常見的攻擊。攻擊者通過各種方法偽造一個請求,模仿用戶提交表單的行為,從而達到修改用戶的數據或執(zhí)行特定任務的目的。
通常情況下CSRF攻擊都配合XSS來實現(xiàn)用戶身份的模仿。
解決思路
1、增加攻擊的難度。GET請求是很容易創(chuàng)建的,用戶點擊一個鏈接就可以發(fā)起GET類型的請求,而POST請求相對比較難,攻擊者往往需要借助JavaScript才能實現(xiàn);因此,確保form表單或者服務端接口只接受POST類型的提交請求,可以增加系統(tǒng)的安全性。
2、對請求進行認證,確保該請求確實是用戶本人填寫表單或者發(fā)起請求并提交的,而不是第三者偽造的。
正常情況下一個用戶提交表單的步驟如下:
1)、用戶點擊鏈接(1) -> 網站顯示表單(2) -> 用戶填寫信息并提交(3) -> 網站接受用戶的數據并保存(4)
而一個CSRF攻擊則不會走這條路線,而是直接偽造第2步用戶提交信息
2)、直接跳到第2步(1) -> 偽造要修改的信息并提交(2) -> 網站接受攻擊者修改參數數據并保存(3)
只要能夠區(qū)分這兩種情況,就能夠預防CSRF攻擊。那么如何區(qū)分呢? 就是對第2步所提交的信息進行驗證,確保數據源自第一步的表單。具體的驗證過程如下:
3)、用戶點擊鏈接(1) -> 網站顯示表單,表單中包含特殊的token同時把token保存在session中(2) -> 用戶填寫信息并提交,同時發(fā)回token信息到服務端(3) -> 網站比對用戶發(fā)回的token和session中的token,應該一致,則接受數據,并保存
這樣,如果攻擊者偽造要修改的信息并提交,是沒辦法直接訪問到session的,所以也沒辦法拿到實際的token值;請求發(fā)送到服務端,服務端進行token校驗的時候,發(fā)現(xiàn)不一致,則直接拒絕此次請求。
相關文章
- 本文教大家如何找回密碼,僅供參考,用于密碼丟失的情況,不要做壞事哦2013-01-09
- 這篇文章主要為大家介紹了在linux下使用reaver破解無線wifi密碼的下載安裝使用方法,需要的朋友可以參考下2013-11-20
- 大家平時設置密碼時,為了省事就設置很簡單的密碼,殊不知卻留下了很大的安全隱患2013-12-06
防止泄露公司機密、企業(yè)數據防泄密軟件排名、電腦文件加密軟件排行
面對日漸嚴重的內部泄密事件,我們如何守護企業(yè)的核心信息,如何防止內部泄密也就成了擺在各個企業(yè)領導面前的一大問題。其實,針對內網安全,防止內部信息泄漏早已有了比較2015-12-17- 這篇文章主要介紹了黑客七大慣用攻擊策略,你必須掌握!,需要的朋友可以參考下2016-02-01
- 散列法會讓黑客很難從散表中回到口令上,同時也會讓網站保存一系列的散列,而不是將它們儲存為安全性低的文本口令。這就意味著,即使散列的口令被偷竊,真正的純文本口令也2016-05-25
- 流量圈的故事很多,劫持與反劫持的故事在很長時間內將繼續(xù)演繹下去。流量是很多互聯(lián)網企業(yè)賴以生存的基礎,通過優(yōu)秀的產品去獲得用戶和流量是唯一的正途,用戶的信任來之不2016-05-25
- 很多安全專家反復提醒用戶設置賬戶和密碼時要盡可能多樣化,以防被破解。黑客只要簡單的使用暴力破解攻擊。暴力破解攻擊是指攻擊者嘗試所有的可能性破解用戶的賬戶名、密碼2016-05-26