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