同源策略-是針對瀏覽器所設計的一項安全規定,頁面中所渲染的資源(JavaScript腳本除外)都須要符合同源策略纔可以正常訪問。html
在構建 Web 項目或者進行 XSS 攻擊時,經常須要進行跨域資源訪問。設想這樣一個場景:攻擊者 Attacker 在網站 A 上注入了一段惡意 JS 代碼,用來盜取訪問者的瀏覽器、Cookie、IP 等信息,並經過 ajax 請求將這些信息以參數的形式(GET、POST 皆可)發送至攻擊者事先準備好的服務站 B 上。若按同源策略規定,在網站 A 上不能直接請求或者發送數據至網站 B,那麼這裏就要用到一些跨域資源請求的方法。html5
經過總結已公開的跨域方法並結合本身的理解和實踐,將幾種跨域資源請求的方法經過實例 Demo 的形式詳細記錄以下。web
網站 A 要獲取網站 B 上的資源內容,跨域方法分爲 網站 B 可控
和 網站 B 不可控
兩類(可控指能更改 Web 服務器設置或者頁面內容)。ajax
網站 B 可控的跨域方法:
- 同主域名下iframe控制document.domain進行跨域
- iframe集合location.hash進行跨域數據獲取
- 經過iframe.name跨域傳遞數據
- 將數據經過 JS 進行直接加載
- html5中的postMessage
- 利用 CORS 進行跨域
網站 B 不可控的跨域方法:
- 代理服務(Proxy)