2014年1月5日 星期日

XSS 跨網站指令碼攻擊

今天要介紹的是 XSS 跨網站指令碼攻擊(Cross-site scripting,因縮寫如果為 CSS 容易混淆因此大家簡稱 XSS),這是一種網站應用程式的安全漏洞攻擊,屬於程式碼注入的一種。它允許惡意使用者將程式碼注入到網頁中,使得其他使用者在觀看該網頁時就會受到影響,甚至是資料遭到竊取的情況。

XSS 攻擊通常是用 JavaScript 來達成,但實際上也可以包括 VBScript、 ActiveX、 Flash ,甚至是普通的 HTML...等;若攻擊成功,攻擊者可得到一般使用者的一些操作、私密網頁內容、會話和 cookie...等內容。最常見的攻擊方法就是,在表單填入 Script,若該網站沒有處理過濾特殊字元就會中標,下面提供幾個常用的方式:
  1. ><script>alert('XSS')</script>
  2. ='><script>alert('XSS')</script>
  3. "><script>alert('XSS')</script>
  4. <script>alert('XSS')</script>
  5. <script>alert('XSS')</script>
  6. %3Cscript%3Ealert('XSS')%3C/script%3E
  7. <img src="javascript:alert('XSS')">
  8. <img src="http://xss.com/xss.png" onerror="alert('XSS')">

而其實要防範這種基本的 XSS 攻擊其實不難,主要是因為現在許多程式語言都有提供對 HTML 內容進行過濾的 function:
  1. PHP 的 htmlspecialchars()
  2. Python 的 cgi.escape()
  3. ASP 的 Server.HTMLEncode()
  4. ASP.NET 的 Server.HtmlEncode() 或 Microsoft Anti-Cross Site Scripting Library
  5. Java 的 xssprotect



所以身為網站開發者應該要謹慎防範 XSS 攻擊,雖然說不管怎麼做強的駭客都還是有辦法破解,但至少要做到不讓別人隨便 Google 一下資訊就能注入程式碼到我們的網站!

沒有留言:

張貼留言