生活随笔
收集整理的這篇文章主要介紹了
跨站点脚本(xss)_跨站点脚本(XSS)和预防
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
跨站點腳本(xss)
如OWASP網站(https://www.owasp.org/index.php/Cross-site_Scripting_(XSS))所述,跨站點腳本(XSS)攻擊的變種幾乎是無限的。 在這里,我建議使用基于Servlet篩選器的解決方案來清理HTTP請求。
攻擊 讓我們看看XSS攻擊如何表現出來。 附件是一個過于簡化的portlet,它顯示了一個場景,該場景在論壇等基于社交和協作的系統中非常常見。 參見下面的偽序列圖。
在這里,1.有一個可用的表單,用戶可以在其中輸入帶有提交按鈕和名為“ mytext”的文本框的評論。 用戶A呈現此表單。 2.用戶A在輸入文本框中輸入一個Java腳本并提交表單(這是邪惡輸入您的應用程序的步驟)。 只是為了讓您看到問題所在; 假設用戶輸入的腳本將應用程序存儲的cookie發送到攻擊者的站點。 3.用戶B登錄到系統,他想查看用戶A提供的注釋。因此,他轉到相應頁面,系統在其中呈現A提供的“ mytext”的值。4.瀏覽器呈現“ mytext”的值,即一個Java腳本,它獲取為用戶B存儲的當前站點的所有cookie,并將其發送到Attackers系統。 預防措施(總比治愈更好),我們將看到清除HTTP參數如何幫助阻止這種攻擊。 為了使這次攻擊成功,當B提供A的評論時,將向瀏覽器發送什么樣的響應? 就像是 - <div>A's Comments</div>
<div>
<script>
<!--
This script will get all cookies and will send them to attacker's site.
-->
</script>
</div> 如您所見,這種攻擊之所以可能是因為,對于瀏覽器來說,HTML文檔是標記和可執行代碼的混合體。 混合可執行代碼和標記的能力是攻擊者可以利用的致命組合。 使用Servlet過濾器,我們可以清除所有輸入參數并刪除所有可以表示瀏覽器可執行指令的特殊字符。 這樣,沒有邪惡進入系統。 這是執行此操作的非常簡單的Servlet過濾器。 使用HttpServletRequest上的包裝器,并且轉義后重寫方法以返回請求參數值。 為了逃避,我建議使用Apache Commons項目的StringEscapeUtils,而不要進行一些自定義編碼。 另一種方法是讓用戶輸入他們想要的任何東西,但在渲染時將<,>,&,',“轉換為其相應的字符實體代碼。 通常,這可以通過使用JSTL來完成– <div>A's comments</div>
<div>
<c:out value="${comments}" escapeXml="true" />
</div> 當用戶可以彼此共享代碼片段時,此方法特別有用。 基于用戶與系統之間的交互,可以設計出許多其他巧妙的方式來發起XSS攻擊。 但是,絕對控制系統輸入將肯定可以再次防御此類攻擊。
參考: XSS和預防我們JCG伙伴 Advait特里維迪在CoolCode博客。
翻譯自: https://www.javacodegeeks.com/2012/08/cross-site-scripting-xss-and-prevention.html
跨站點腳本(xss)
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎
總結
以上是生活随笔為你收集整理的跨站点脚本(xss)_跨站点脚本(XSS)和预防的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。