Cross Site Scripting
Cross Site Scripting
某網站的安全檢測
我們瀏覽的網頁全部都是基於超文本標記語言創建的,如顯示一個超鏈接:
而XSS的原理也就是往HTML中注入腳本,HTML指定了腳本標記<script>.在沒有過濾字元的情況下,只需要保持完整無錯的腳本標記即可觸發XSS,假如我們在某個資料表單提交內容,表單提交內容就是某個標記屬性所賦的值,我們可以構造如下值來閉和標記來構造完整無錯的腳本標記,
"><"
結果形成了 <"">茄子寶的博客在這裡這樣一個標記,:)這裡和SQL注入很象!
XSS攻擊分成兩類,一類是來自內部的攻擊,主要指的是利用程序自身的漏洞,構造跨站語句,如:dvbbs的showerror.asp存在的跨站漏洞。另一類則是來來自外部的攻擊,主要指的自己構造XSS跨站漏洞網頁或者尋找非目標機以外的有跨站漏洞的網頁。
防範措施是Web應用程序中最常見的漏洞之一。如果您的站點沒有預防XSS漏洞的固定方法,那麼就存在XSS漏洞。這個利用XSS漏洞的病毒之所以具有重要意義是因為,通常難以看到XSS漏洞的威脅,而該病毒則將其發揮得淋漓盡致。
跨站腳本(Cross-site scripting,XSS)漏洞是Web應用程序中最常見的漏洞之一。站點沒有預防XSS漏洞的固定方法,那麼就存在XSS漏洞。這個利用XSS漏洞的病毒之所以具有重要意義是因為,通常難以看到XSS漏洞的威脅,而該病毒則將其發揮得淋漓盡致。XSS漏洞的蠕蟲病毒的特別之處在於它能夠自我傳播。
如:站點上的一個用戶希望自己能夠在網站的友人列表上更“受歡迎”。但是該用戶不是通過普通的方法來結交新朋友,而是在自己的個人信息中添加了一些代碼,導致其他人在訪問他的頁面時,會不知不覺地利用XSS漏洞將他加為好友。更惡劣的是,它會修改這些人的個人信息,使其他人在訪問這些被感染的個人信息時,也會被感染。
1、各類用戶帳號,如機器登錄帳號、用戶網銀帳號、各類管理員帳號
2、制企業數據,包括讀取、篡改、添加、刪除企業敏感數據的能力
3、竊企業重要的具有商業價值的資料
4、非法轉賬
5、制發送電子郵件
6、網站掛馬
7、制受害者機器向其它網站發起攻擊
要認真檢查您的應用程序是否存在XSS漏洞。
必須明確:一切輸入都是有害的,不要信任一切輸入的數據。緩和XSS問題的首要法則是確定哪個輸入是有效的,並且拒絕所有別的無效輸入。
替換危險字元,如:"&", "<", ">", ""","'", "/", "?",";", ":", "%", "<SPACE>", "=", "+"。各種語言替換的程度不盡相同,但是基本上能抵禦住一般的XSS攻擊。
此外,WebLogic Server的encodeXSS()以有所幫助。可以試著針對所有牽涉到使用encodeXSS()或其他某個篩選方法的輸出找出一種編碼模式——找出對一種編碼模式來說不正確的應用程序往往要比找出XSS漏洞要容易的多。更重要的是,不要認為,就因為XSS漏洞是一個常見問題,所以它危害不大。
之所以出現XSS漏洞有兩個原因。首先,HTML沒有明確區分代碼和數據。無法確定指出“這個字元串表示的是數據”。您可以將其放入引號中,但是數據是否包含引號呢?……其次,程序在將用戶數據發送回瀏覽器時沒有進行有效的轉義。這導致包含有(例如說)引號的數據被放入頁面中,從而引發了問題。而AJAX要提供的好處是,它包含一個專用渠道XML鏈接,其中全是數據而沒有代碼。這樣,就有可能讓客戶端AJAX引擎負責對字元串進行轉義、檢測不正確的值,等等。說是這麼說,直到AJAX更為成熟(可能也更為標準化)之前,它只會導致錯誤的編程和安全漏洞。
微軟的Anti-Cross Site Scripting Library旨在方便開發人員對HTML輸出進行編碼(encode)以避免跨站腳本攻擊(XSS)。與其他的編碼庫不同,這個腳本庫採用的是“Principle of Inclusions”,通過定義合法的或允許的字符集合,對不在這個集合內的其他字元則進行相應的編碼。結果是,這方法對XSS攻擊的防範極其有效。