為什麼主流網站無法捕獲 XSS 漏洞?
二十多年來,跨站指令碼(簡稱 XSS)漏洞一直是主流網站的心頭之痛。為什麼過了這麼久,這些網站還是對此類漏洞束手無策呢?
對於最近 eBay 網站曝出的跨站指令碼漏洞,你有什麼想法?為什麼會出現這樣的漏網之魚?一個如此大規模的網站,不應該具備可靠的閘道器安全技術以阻止任何情況下的 XSS 攻擊麼?
即便從上世紀 90 年代開始,跨站指令碼漏洞就已經為人們所熟知。時至今日,它仍在貽害為數不少的網站。大多數主流網站,包括谷歌,CNN,PayPal 以及 Facebook,都曾受過 XSS 漏洞的影響。該漏洞也常年出現在 CWE/SANS 前 25 個最危險的程式設計錯誤、OWASP 前 10 個最致命的 Web 應用安全風險之類的榜單。
XSS 攻擊與大多數應用層攻擊(諸如 SQL 注入攻擊)不同,因為它攻擊的是應用的使用者,而非應用本身或應用伺服器。這類攻擊會往 Web 應用的內容中注入程式碼,通常是 JavaScript 之類的客戶端程式碼。大多數網站都有許許多多的注入位置,包括搜尋框、反饋表格,cookie 以及論壇等。藉助 XSS 漏洞,黑客可以竊取資料,控制使用者的會話,執行惡意程式碼,或操縱受害使用者瀏覽器中顯示的內容。
像 eBay 這樣的網站,幾乎完全基於使用者產生的內容,通常在使用者的專案描述部分包含許多活動內容(Active Content),比如 JavaScript 和 Flash。由於網站必須與使用者互動,接收來自使用者的輸入、返回資料,這意味著,攻擊者也可以直接與網站互動,從而穿破傳統的外圍安全防護。除非所有使用者提供的內容都經過嚴格審查,XSS 攻擊程式碼就有可能注入拍賣清單頁面,從而影響每個訪問該頁面的使用者。使用者輸入的所有內容(表單資料、cookie、郵件、檔案、圖片等)都應該視為不可信任,需要經歷審查,刪除其中可能被惡意使用的字元與字串,才能繼續執行指令碼或傳給資料庫。
導致 eBay 這樣的大網站持續受到 XSS 攻擊的一大原因,是這些網站過於複雜,實時生成的網頁常常會包含許多外部站點的內容。這使得測試階段,列舉使用者與應用互動的所有排列組合變得不太現實,繼而導致 XSS 漏網之魚的出現。
話雖如此,eBay 居然沒有一套更為嚴格的程式碼審查流程(近幾周發現了多個 XSS 漏洞),還是有些令人吃驚。用於測試 XSS 漏洞的工具其實很多,它們都能在程式碼上線之前有效查詢漏洞。此外,開發者也可以使用安全控制庫(諸如 OWASP 的企業安全 API 或微軟的反跨站指令碼庫),而不需要自己編寫驗證檢查。而且,諸如執行時應用自我保護(RASP)等閘道器安全技術也有助於檢測並防禦對 XSS 漏洞的攻擊。因此,如此主流的一個大網站(eBay),卻沒能有效防禦如此廣為人知的安全漏洞,實在是有些讓人失望。
如今,多樣化的攻擊手段層出不窮,傳統安全解決方案越來越難以應對網路安全攻擊。OneRASP 實時應用自我保護技術,可以為軟體產品提供精準的實時保護,使其免受漏洞所累。想閱讀更多技術文章,請訪問 [OneAPM 官方技術部落格]。
本文轉自 OneAPM 官方部落格
相關文章
- 網站為什麼會存在漏洞網站
- StackOverflowError是無法捕獲的Error
- 獲取的 Cookie 為什麼無法用於爬蟲Cookie爬蟲
- 成人網站PornHub跨站指令碼(XSS)漏洞挖掘記網站指令碼
- javascript事件捕獲是什麼意思JavaScript事件
- 為什麼網路教育無法取代學校教育?
- 快速找出網站中可能存在的XSS漏洞實踐(一)網站
- 網站建設之企業為什麼要做網站?網站
- 為什麼索引無法使用is null和is not null索引Null
- 為什麼getYear()無法取得正確年份
- 為什麼網路安全防禦無法抵禦勒索軟體?
- 為什麼網站訪問速度很慢網站
- 網站為什麼會打不開網站
- 網站無法登陸網站
- 漏洞分析——變數缺陷漏洞及通用異常捕獲宣告缺陷漏洞變數
- 為什麼js有時候無法獲取圖片的寬度和高度JS
- 為什麼網站使用CDN加速這麼流行?網站
- 網站為什麼要做“等保”?怎麼做?網站
- 中介軟體中丟擲異常,Handler中無法捕獲
- XSS漏洞
- 為什麼用CDN給你網站加速?網站
- 為什麼我的 WordPress 網站被封了?網站
- 網站為什麼需要使用CDN加速?網站
- 為什麼說CDN有利於網站網站
- 公司網站為什麼亂碼了呢網站
- win10 steam好友網路無法訪問-118怎麼解決_為什麼steam好友網路無法訪問Win10
- 【第七章】XSS 跨站指令碼漏洞指令碼
- 網站無法連線資料庫怎麼辦?網站資料庫
- 網站存在漏洞怎麼修復 如何修補網站程式程式碼漏洞網站
- dedecms搭建網站安裝過程中無法獲取體驗資料怎麼辦?網站
- 為什麼python中使用模組無法識別Python
- 為什麼trigger()無法觸發hover事件事件
- 為什麼有時父元素無法包含子元素?
- 為什麼flexigrid無法顯示資料Flex
- XSS漏洞分析
- apache網站漏洞修復解決辦法Apache網站
- CDN是什麼?為何要用CDN加速網站?網站
- 為什麼要把網站升級到HTTPS網站HTTP