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