隨著SQL注入攻擊日益消沉,由于Web業務的代碼編寫人員不嚴謹的字符限制而導致的XSS漏洞出現,XSS攻擊成為了一種新的安全挑戰。
1.什么是XSS(跨站腳本)攻擊?
XSS攻擊:跨站腳本攻擊(Cross Site Scripting),為不和層疊樣式表(Cascading Style Sheets, CSS)的縮寫混淆,故將跨站腳本攻擊縮寫為XSS。XSS是一種經常出現在Web應用中的計算機安全漏洞,它允許惡意Web用戶將代碼植入到提供給其它用戶使用的頁面中,比如HTML代碼和客戶端腳本。攻擊者利用XSS漏洞旁路掉訪問控制——例如同源策略(same origin policy)。這種類型的漏洞由于被駭客用來編寫危害性更大的phishing攻擊而變得廣為人知。對于跨站腳本攻擊,黑客界共識是:跨站腳本攻擊是新型的“緩沖區溢出攻擊”,而JavaScript是新型的“ShellCode”。
XSS攻擊和前段時間甚囂塵上的SQL注入攻擊一樣,都是由于Web業務的代碼編寫人員不嚴謹的字符限制而導致的:當某個站點允許用戶提交java script腳本(這在Web2.0年代非常普遍),而又沒有對這些腳本進行嚴格分析,就有可能存在XSS漏洞。這就決定了XSS漏洞的獨特性:任何允許提交腳本的頁面都可能存在XSS漏洞,而且這些漏洞可能各不相同。
2.如何防御XSS攻擊?
業內對XSS漏洞的防御一般有兩種方式。
第一種方式就是代碼修改,對用戶所有提交內容進行驗證,包括URL、查詢關鍵字、HTTP頭、POST數據等,僅接受指定長度范圍內、采用適當格式、采用所預期的字符的內容提交,對其它的一律過濾。接下來就是實現Session標記(session tokens)、CAPTCHA系統或者HTTP引用頭檢查,以防功能被第三方網站所執行。最后一步就是確認接收的的內容被妥善的規范化,僅包含最小的、安全的Tag(沒有javascript),去掉任何對遠程內容的引用(尤其是樣式表和javascript),使用HTTP only的cookie。
但這種方法將降低Web業務的交互能力,用戶僅能提交少量指定的字符,不適應那些交互性要求較高的業務系統。而且Web業務的編碼人員很少有受過正規的安全培訓,即便是專業的安全公司,由于側重點的不同,也很難完全避免XSS攻擊:2008年1月,xssed.com的一份報告指出McAfee、Symantec、VeriSign這三家安全公司的官方站點存在約30個XSS漏洞。
第二種方式就是部署專業的防御設備,目前較為流行的有入侵防御產品,利用的就是入侵防御產品對應用層攻擊的檢測防御能力。用戶在選擇相應的產品之前,最好先了解一下相關產品的XSS、SQL注入等Web威脅的檢測方式,有一些入侵防御產品采用的還是傳統的特征匹配方法,如對經典的XSS攻擊來說,就是定義“javascript”這個關鍵字進行檢索,一旦發現提交信息中包含“javascript”,就認定為XSS攻擊。這種模式匹配的方法缺點顯而易見:通過編碼或插入TAB鍵方式可以輕易躲避,而且還存在極大的誤報可能,如“http://www.xxx.com/javascript/kkk.asp?id=2345”這樣一個URL,由于包含了關鍵字“javascript”,也將會觸發報警。
比較好的方式是選擇那些基于攻擊手法或者說基于攻擊原理檢測的入侵防御產品。啟明星辰公司于近期發布天清入侵防御系統的新版本,沒有采用傳統的特征匹配方式,而是采用了行為特征分析方式,通過分析XSS所有可能的攻擊手法,建立一個XSS攻擊行為庫來分析判斷XSS攻擊。采用了這種方法的入侵防御產品可以避免傳統安全產品在XSS攻擊檢測上的漏報和誤報,實現精確阻斷,為面臨XSS威脅的廣大網絡管理員提供一個很好的選擇。
如果有需要服務器的租用與托管的敬請聯系QQ:1501281758(億恩星辰) 聯系電話:0371—63322220