◆李 鑫
(廣東省石油化工職業(yè)技術(shù)學(xué)校 廣東 528225)
Web安全問題與防范策略分析
◆李 鑫
(廣東省石油化工職業(yè)技術(shù)學(xué)校 廣東 528225)
在互聯(lián)網(wǎng)時代背景下,人們越來越重視Web安全問題。本文從Web應(yīng)用的結(jié)構(gòu)體系著手,對web攻擊的目的、本質(zhì)和對象展開分析,主要從瀏覽器、傳輸通道、服務(wù)器三個Web的核心內(nèi)容說明了web攻擊的來源和形式,并從攻擊前的安全清單掃描,攻擊中如何阻斷攻擊,攻擊后如何保護(hù)數(shù)據(jù)等三方面說明了典型的web安全問題防范策略,較為全面地分析了web攻擊的原理和危害程度,給出了相對有效的防范措施建議,可以把攻擊的損失降到最低。
web安全;web攻擊;網(wǎng)絡(luò)安全
Web平臺上的互聯(lián)網(wǎng)應(yīng)用越來越廣泛,吸引了黑客們的強(qiáng)烈關(guān)注,Web安全威脅也日益凸顯。隨著用戶對Web應(yīng)用安全的關(guān)注度也逐漸升溫。黑客可以利用 SQL 注入等 Web 安全漏洞獲取 Web 服務(wù)器的權(quán)限,竊取服務(wù)器數(shù)據(jù),篡改網(wǎng)頁信息。因此,解決 Web安全問題迫在眉睫。OWASP(Open Web Application Security Project開放式Web應(yīng)用程序安全項(xiàng)目)組織于2017年發(fā)布的Web應(yīng)用的十大關(guān)鍵風(fēng)險,從中看出,Web應(yīng)用受到的攻擊手段眾多,因此有必要對其進(jìn)行分析和梳理,以便全面、有效地防范Web應(yīng)用面臨的風(fēng)險。
排名 漏洞
1 注入式風(fēng)險
2 跨站點(diǎn)腳本 (簡稱XSS)
3 無效的認(rèn)證及會話管理功能
4 對不安全對象的直接引用
5 偽造的跨站點(diǎn)請求(簡稱CSRF)
6 安全配置錯誤
7 加密存儲方面的不安全因素
8 不限制訪問者的URL
9 傳輸層面的保護(hù)力度不足
10 未經(jīng)驗(yàn)證的重新指向及轉(zhuǎn)發(fā)
Web 應(yīng)用通常有三層架構(gòu),任何一層出現(xiàn)安全問題都會導(dǎo)致整個 Web應(yīng)用受到威脅。無論是底層的操作系統(tǒng),中間層的Web 服務(wù)程序、數(shù)據(jù)庫服務(wù)等通用組件,還是上層的內(nèi)容和業(yè)務(wù)相關(guān)的網(wǎng)頁程序,都是黑客可能的攻擊目標(biāo)。
(1)竊取用戶信息
獲取用戶登錄狀態(tài)、獲取賬號密碼、獲取用戶私密信息等,得逞后將進(jìn)一步實(shí)施盜取賬號資產(chǎn)、售賣用戶隱私等惡劣行為。
(2)破壞產(chǎn)品,致其無法正常使用
頻繁調(diào)用服務(wù)器接口以搞垮服務(wù)器,破壞底層數(shù)據(jù)使得Web應(yīng)用無法啟用等。
Web攻擊,本質(zhì)上是攻擊者通過一系列攻擊方式,利用數(shù)據(jù)流對攻擊對象(瀏覽器、傳輸通道、服務(wù)器)進(jìn)行攻擊,只要其中一個攻擊對象被成功攻破,便能達(dá)成攻擊目的。攻擊行為必然對應(yīng)于具體的攻擊對象,Web攻擊的攻擊對象就是Web體系及其中的組成要素。
從 Web體系的核心內(nèi)容來看,攻擊對象可以分為三塊:瀏覽器、傳輸通道、服務(wù)器。Web安全實(shí)質(zhì)上是針對每種攻擊手段進(jìn)行防御,所以判斷其攻擊對象,并對攻擊對象實(shí)施保護(hù)是安全工作的基本思路。
主要攻擊類型有三種:前端安全漏洞XSS、前端新型攻擊機(jī)制CSRF 點(diǎn)擊劫持、前端新特性濫用
(1)前端安全漏洞
(2)前端新型攻擊機(jī)制
界面操作劫持攻擊也是典型的 Web前端攻擊方式,很多知名 Web 應(yīng)用都受到過這種攻擊。界面操作劫持可劃分為點(diǎn)擊劫持和拖放劫持,主要是通過誤導(dǎo)用戶使用點(diǎn)擊或者拖放操作,到達(dá)竊取用戶信息的目的。
(3)前端新特性濫用
HTML5是制定的新一代語言的標(biāo)準(zhǔn),在PC端、手機(jī)、平板電腦的瀏覽器上都得到了廣泛的支持,給用戶到來了更加方便和友好的訪問體驗(yàn)的同時,也帶來了新的安全挑戰(zhàn)。
比如,HTML5 支持 Web Socket 和 XML Http Request level 2。這些功能為攻擊者提供了構(gòu)造各種惡意代碼的可能性,濫用Web Socket 和 XHR level 2 是 HTML5 面臨的最大威脅之一。
Web中的傳輸通道主要是指連接瀏覽器和服務(wù)器的網(wǎng)絡(luò)通道,數(shù)據(jù)從瀏覽器端發(fā)出,通過網(wǎng)絡(luò)通道,到達(dá)服務(wù)器,服務(wù)器再把數(shù)據(jù)結(jié)果通過網(wǎng)絡(luò)通道返回到瀏覽器。擴(kuò)大來說,也包括Web 應(yīng)用的傳播。
該類攻擊是數(shù)據(jù)對服務(wù)器進(jìn)行的攻擊。攻擊方式與攻擊瀏覽器的方式是類似的,也可分為兩種:利用服務(wù)器特性攻擊、利用服務(wù)器邏輯漏洞攻擊。
(1)利用服務(wù)器特性攻擊
事情在2010年前后開始起變化,智慧城市和智慧醫(yī)療的概念開始落地,很多城市都有一些不錯的初體驗(yàn),包括杭州市。這一時期,醫(yī)院信息化系統(tǒng)中的業(yè)務(wù)模塊越來越多,涉及醫(yī)療、科研、決策等不同業(yè)務(wù)領(lǐng)域。醫(yī)院內(nèi)部以及跨醫(yī)院的信息交換越來越復(fù)雜,平臺集成則成為信息化建設(shè)的焦點(diǎn)。
以SQL攻擊后臺數(shù)據(jù)庫為例,把SQL命令插入到Web表單遞交從而達(dá)到欺騙服務(wù)器執(zhí)行惡意SQL命令。如果后臺沒有實(shí)施防御措施,數(shù)據(jù)就會被當(dāng)做SQL指令來執(zhí)行而非普通字符串。
(2)利用后臺邏輯漏洞攻擊
后臺邏輯當(dāng)中信任邏輯漏洞較為常見,這里以 CSRF(跨站請求偽造,Cross Site Request Forgery)攻擊為例。由于引入了跨域共享機(jī)制( COR) ,HTML5 中出現(xiàn)了新的跨域請求偽造方式。CSRF 攻擊中攻擊者通過各種手段竊取受害者身份( cookie、token等),發(fā)現(xiàn)偽造請求或誘導(dǎo)實(shí)現(xiàn)的請求,如果目標(biāo)站點(diǎn)不經(jīng)驗(yàn)證就相信應(yīng)該偽請求,就實(shí)現(xiàn)了 CSRF 攻擊。
根據(jù)對 Web的攻擊,相應(yīng)的防范措施也可分為三個階段,具體如下。
防范策略首先要通過清單掃描減少可能存在的漏洞數(shù)量,加強(qiáng)開發(fā)人員、設(shè)計人員和管理人員等人的 Web 信息系統(tǒng)安全意識。可將關(guān)鍵的安全問題列為清單,在 Web應(yīng)用開發(fā)期間即予以考慮,以充分保障Web應(yīng)用的安全體系。
3.1.1數(shù)據(jù)庫
(1)對用戶身份認(rèn)證的數(shù)據(jù)和敏感數(shù)據(jù)(如 token、email或支付信息)加密。
(2)數(shù)據(jù)庫訪問的賬戶請使用最小權(quán)限,而不要用數(shù)據(jù)庫root賬戶。
(3)用專門設(shè)計的Key store來存儲和分發(fā)機(jī)密數(shù)據(jù)和內(nèi)容,不要硬編碼寫到應(yīng)用里。
(4)只使用SQL預(yù)處理語句(prepared statements)嚴(yán)防SQL注入。
3.1.2開發(fā)
(1)對每個待發(fā)布的版本,要確保所有組件都經(jīng)過了漏洞掃描,這包括O/S、庫和包。這個步驟應(yīng)該在持續(xù)集成/持續(xù)交付流程中自動完成。
(2)保證開發(fā)系統(tǒng)的安全,這和產(chǎn)品系統(tǒng)安全同樣重要。應(yīng)該用安全、獨(dú)立的開發(fā)系統(tǒng)來開發(fā)軟件。
3.1.3認(rèn)證
(1)確保所有的密碼都使用了正確的加密方式(如bcrypt)。永遠(yuǎn)不要自己實(shí)現(xiàn)crypto,而且要用隨機(jī)數(shù)據(jù)對crypto做正確的初始化。
(2)在實(shí)現(xiàn)登錄、忘記密碼、重置密碼等功能時,采用前人驗(yàn)證過的最佳實(shí)現(xiàn)或組件,不要重復(fù)造輪子。
(3)遵循簡單且適宜的密碼規(guī)則,鼓勵用戶使用較長的隨機(jī)密碼。
(4)你們的所有服務(wù),登錄時要使用多重驗(yàn)證。3.1.4 API
(1)確保你的公共API中沒有可枚舉資源。(2)確保用戶在使用API時已經(jīng)經(jīng)過了完全認(rèn)證和授權(quán)。(3)在API中使用隨機(jī)檢查來檢測可能具有潛在攻擊的異常請求。
3.1.5校驗(yàn)與編碼
(1)為了實(shí)現(xiàn)快速用戶響應(yīng),輸入校驗(yàn)可以在客戶端完成,始終要對用戶的輸入進(jìn)行校驗(yàn)和編碼。
(2)在服務(wù)器上用白名單校驗(yàn)所有用戶輸入。不要直接將用戶內(nèi)容添加到響應(yīng)中。千萬不要在SQL語句中使用用戶輸入的內(nèi)容數(shù)據(jù)。
在攻擊發(fā)生時,必須阻止攻擊發(fā)生,確保 Web 應(yīng)用能夠持續(xù)穩(wěn)定地運(yùn)行,確保 Web 應(yīng)用和用戶信息安全。一方面要避免Web 服務(wù)器受到 DDoS 攻擊,通過部署抗拒絕服務(wù)設(shè)備進(jìn)行分布式拒絕服務(wù)(DDoS)攻擊的防護(hù)。另一方面要避免網(wǎng)頁的篡改、網(wǎng)頁被掛馬、網(wǎng)頁中存在釣魚鏈接等現(xiàn)象。通過部署專業(yè)Web 防護(hù)產(chǎn)品,確保過濾攻擊因素(如 SQL 注入攻擊、跨站腳本攻擊等),同時也能保證網(wǎng)頁能夠健康運(yùn)行。
在攻擊發(fā)生之后,要確信攻擊者攻入到 Web服務(wù)器也無法操作或盜取服務(wù)器中重要數(shù)據(jù)和敏感信息,可以通過限制非法下載,加強(qiáng)Web shell的防護(hù)和敏感數(shù)據(jù)的過濾等,最大程度保證用戶和Web服務(wù)器數(shù)據(jù)不泄露出去。
Web應(yīng)用的技術(shù)不斷發(fā)展,帶給人們效率的提高和美好的體驗(yàn)的同時,也帶來了黑客的攻擊,造成巨大的損失。我們?nèi)绻軌驈墓舻哪繕?biāo)、本質(zhì)、對象上去做全面的防范,就有可能最大程度降低黑客帶來的破壞和損失。
[1]譚彬,楊明,梁業(yè)裕,寧建創(chuàng). Web安全漏洞研究和防范[J].軟件導(dǎo)刊,2017.
[2]孫松柏,Ali Abbasi,諸葛建偉,段海新,王珩. HTML5安全研究[J].計算機(jī)應(yīng)用與軟件,2013.
[3]劉海,徐旁,郭帆.防范攻擊的研究綜述[J].計算機(jī)與現(xiàn)代化,2011.