今天要介紹的是 XSS 跨網站指令碼攻擊(Cross-site scripting,因縮寫如果為 CSS 容易混淆因此大家簡稱 XSS),這是一種網站應用程式的安全漏洞攻擊,屬於程式碼注入的一種。它允許惡意使用者將程式碼注入到網頁中,使得其他使用者在觀看該網頁時就會受到影響,甚至是資料遭到竊取的情況。
XSS 攻擊通常是用 JavaScript 來達成,但實際上也可以包括 VBScript、 ActiveX、 Flash ,甚至是普通的 HTML...等;若攻擊成功,攻擊者可得到一般使用者的一些操作、私密網頁內容、會話和 cookie...等內容。最常見的攻擊方法就是,在表單填入 Script,若該網站沒有處理過濾特殊字元就會中標,下面提供幾個常用的方式:
而其實要防範這種基本的 XSS 攻擊其實不難,主要是因為現在許多程式語言都有提供對 HTML 內容進行過濾的 function:
所以身為網站開發者應該要謹慎防範 XSS 攻擊,雖然說不管怎麼做強的駭客都還是有辦法破解,但至少要做到不讓別人隨便 Google 一下資訊就能注入程式碼到我們的網站!
XSS 攻擊通常是用 JavaScript 來達成,但實際上也可以包括 VBScript、 ActiveX、 Flash ,甚至是普通的 HTML...等;若攻擊成功,攻擊者可得到一般使用者的一些操作、私密網頁內容、會話和 cookie...等內容。最常見的攻擊方法就是,在表單填入 Script,若該網站沒有處理過濾特殊字元就會中標,下面提供幾個常用的方式:
- ><script>alert('XSS')</script>
- ='><script>alert('XSS')</script>
- "><script>alert('XSS')</script>
- <script>alert('XSS')</script>
- <script>alert('XSS')</script>
- %3Cscript%3Ealert('XSS')%3C/script%3E
- <img src="javascript:alert('XSS')">
- <img src="http://xss.com/xss.png" onerror="alert('XSS')">
而其實要防範這種基本的 XSS 攻擊其實不難,主要是因為現在許多程式語言都有提供對 HTML 內容進行過濾的 function:
- PHP 的 htmlspecialchars()
- Python 的 cgi.escape()
- ASP 的 Server.HTMLEncode()
- ASP.NET 的 Server.HtmlEncode() 或 Microsoft Anti-Cross Site Scripting Library
- Java 的 xssprotect
所以身為網站開發者應該要謹慎防範 XSS 攻擊,雖然說不管怎麼做強的駭客都還是有辦法破解,但至少要做到不讓別人隨便 Google 一下資訊就能注入程式碼到我們的網站!
沒有留言:
張貼留言