国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

三種常見的Web漏洞及其防護技術研究

2021-03-07 10:34:01江科
網絡安全技術與應用 2021年10期
關鍵詞:攻擊者漏洞語句

◆江科

三種常見的Web漏洞及其防護技術研究

◆江科

(川北醫(yī)學院 四川 637000)

本文對SQL注入攻擊漏洞、XSS漏洞、文件上傳漏洞三種常見的Web 漏洞的利用原理進行了分析,并以PHP開發(fā)環(huán)境為例,對其防范技術作了一定的研究和總結。以期軟件開發(fā)人員能在編碼過程中更加嚴謹,提高軟件產品的安全性,以便信息系統(tǒng)管理人員能了解基本的漏洞利用原理,有針對性地開展網絡安全工作。

SQL注入漏洞;XSS漏洞;文件上傳漏洞;PHP;網絡安全

1 引言

普通高校信息系統(tǒng)一般不存在關鍵信息基礎設施,來自較為豐富資源的威脅源的攻擊相對較為少見。通過我校網絡安全防護設備日志記錄分析得出,惡意攻擊者對我校Web系統(tǒng)較多的攻擊方式是通過軟件對目標系統(tǒng)進行掃描和嗅探,契機對發(fā)現(xiàn)的漏洞進行利用,其中,對SQL注入攻擊漏洞、XSS漏洞、文件上傳漏洞的嗅探頻次較高,雖然這三個漏洞的利用技術門檻較低,但危害較大。因此,本文以PHP開發(fā)環(huán)境為例,對這三種漏洞的原理分析和防護技術研究作一定的研究,以促進普通高校網絡安全管理工作的水平提升。

2 SQL注入攻擊漏洞

2.1 攻擊原理分析

SQL注入攻擊源于英文“SQL Injection Attack”,具有廣泛性、隱蔽性、門檻低、變種多、危害大等特點[1]。其原理是利用開發(fā)者拼接SQL語句的編碼漏洞,發(fā)送特殊的數(shù)據到數(shù)據庫執(zhí)行,以期到達繞過身份驗證、竊取和破壞數(shù)據、脫庫乃至取得控制器等非法目的。

以身份驗證為例,用戶在前端Html表單中填寫賬號和密碼,通過發(fā)送Http POST方法發(fā)送到服務器端進行驗證,服務器端使用獲取到的POST數(shù)據拼接SQL語句發(fā)送到數(shù)據庫進行查詢,如果存在匹配記錄則通過驗證,反正則不通過。

一個典型的存在SQL注入攻擊漏洞的SQL語句如下拼接:

Select * From Admin Where Name=’{$_POST[name]}’ and Password=’ {$_POST[password]}’

正常情況下,用戶輸入用戶名為admin,密碼為Password時,執(zhí)行的SQL語句為:

Select * From Admin Where Name=’ admin’ and Password=’ Password’

看上去邏輯沒有問題,但攻擊者可以發(fā)送一些特殊的數(shù)據即可輕松欺騙程序,比如把Password填寫為“any’ or ‘1=1”,則執(zhí)行的SQL語句為:

Select * From Admin Where Name=’admin’ and Password=’any’ or ‘1=1’

本例利用SQL 語句使用對稱單引號來限定文本值這一語法特性,在文本值中再插入兩個單引號,擾亂原有語法結構,增加SQL語句的條件值“or ‘1=1’”。很明顯,增加的條件值1=1恒定為True,因此無論Name和Password是什么值,整個條件值都是True,都能查詢到匹配記錄并通過身份驗證從而進入系統(tǒng),產生嚴重威脅。

SQL注入攻擊遠不止利用單引號這一方法:“#”、“%”、“l(fā)ike”等關鍵詞和函數(shù)等都可以被利用,尤其是函數(shù)注入將產生較大危害,其注入原理和本例類似,可以類推。

2.2 防范措施

SQL注入攻擊的防護總綱領就是一條:不信任任何客戶端發(fā)送的數(shù)據。在編碼過程中,對客戶端發(fā)送的數(shù)據進行層層檢測和過濾,確定合法后再發(fā)送到數(shù)據庫執(zhí)行,主要措施有以下4條:

(1)嚴格檢查和過濾輸入字符串

通常情況下,服務器端需要接受客戶端數(shù)據的值類型只會是一種或少數(shù)幾種,很少情況下需要任意形式的數(shù)據。因此,可以限定接收數(shù)據的值類型。比如只需要值類型為數(shù)字的數(shù)據,可通過is_numeric()函數(shù)判斷,也可使用set_type()轉換,還可使用max()、int_val()等函數(shù)直接過濾;又比如字母,可使用ctype_alpha ()函數(shù)進行檢測,總之,經過檢測和過濾的合法數(shù)據才進入程序的下一個流程。

(2)轉義

在數(shù)據檢查和過濾之后、發(fā)送到數(shù)據庫之前對數(shù)據進行轉義,有語法意義的特殊字符將被轉換為該字符的文本值,不作為語法處理,比如“’”轉義后為“”,“”才是單引號在SQL語句中的文本值。推薦使用各數(shù)據庫編程接口專門的轉義函數(shù)而不是php內置的addslashes()函數(shù)進行轉義,相對更完善和安全,比如使用PDO類的quote()方法。

(3)使用預處理語句

SQL注入漏洞普遍存在的根本原因是字符串拼接SQL語句的編碼方式極易發(fā)生數(shù)據檢查、過濾和轉義的疏忽。使用預處理語句則可規(guī)避此問題,本例經改造后核心代碼如下:

$sth = $dbh->prepare(“Select * From Admin Where Name=? and Password=?”);

$sth->execute([$name,$password]);

預處理語句可理解為SQL 語句模板,預先準備好并使用占位標記“?”(存在多種形式)代替將要被執(zhí)行的真實數(shù)據,當execute()方法執(zhí)行時,以參數(shù)形式綁定的數(shù)據將逐一取代對應的占位標記,最后發(fā)送到數(shù)據庫執(zhí)行。這種方式完全避免了字符串拼接,不僅程序可讀性強,而且數(shù)據庫接口會自動檢驗,阻止SQL注入,同一預處理語句多次執(zhí)行的性能也有提高,推薦開發(fā)人員使用。

(4)數(shù)據庫權限限定

給予Web系統(tǒng)能夠正常運行的數(shù)據庫賬號最小權限,作為函數(shù)式注入的最后防線。通常一般的Web系統(tǒng)只需要select、update、delete和insert等基本的數(shù)據庫權限,建議開發(fā)人員或數(shù)據庫管理員對給予Web系統(tǒng)的數(shù)據庫用戶或角色進行設置。

3 XSS漏洞

3.1 利用原理分析

XSS全稱為跨站腳本(Cross Site Scripting),為了和層疊樣式表(Cascading Style Sheets,CSS)區(qū)分,業(yè)內簡稱為XSS。XSS漏洞是Web應用的經典漏洞,但直到現(xiàn)在,跨站腳本攻擊仍是許多Web應用的最大威脅[2]。其原理通過各種方法向目標Web頁面里插入腳本,當其他用戶瀏覽該頁面時,嵌入的腳本被執(zhí)行,達到惡意攻擊的目的。

在一個留言本的Web頁面上,它允許用戶留言,并可以被其他用戶看到。如果存在XSS漏洞,攻擊者可以留一段特殊的“言”:

于是每位瀏覽該頁面的用戶瀏覽器都會出現(xiàn)一個彈窗,并顯示hello word。當然這只是闡述原理的簡單示例,并不產生攻擊效果,但稍作深入就可以做更多事情,比如盜取身份信息:

thief.js核心攻擊代碼:

var ca=document.cookie;

script.src='http://example.com/ thief.php?ca='+ca;

簡單幾行代碼即可讀取用戶的cookie,傳送至攻擊者服務器進行收集,以進行下一步攻擊活動,這就是典型身份盜取攻擊。以此原理類推,XSS漏洞還會產生釣魚詐騙、網頁掛馬、垃圾信息發(fā)送、劫持用戶行為等諸多安全威脅。

3.2 防范技術

避免產生XSS漏洞的原則是控制數(shù)據輸入點和輸出點,編碼過程中對輸入和輸出的數(shù)據進行過濾和轉換,主要措施有以下5條:

(1)在數(shù)據輸入點的過濾和轉換與上文SQL漏洞防范技巧一致,注意輸入點的防護不僅僅在POST數(shù)據中,任何從客戶端發(fā)送的數(shù)據都可作為XSS攻擊使用。

(2)服務器端輸出轉換:對于完全沒有必要在頁面上執(zhí)行HTML和Script的代碼的應用場景,在服務器端使用htmlspecialchars()、htmlentities()或第三方RemoveXss()函數(shù)進行轉換后再輸出,確保沒有可執(zhí)行的腳本代碼輸出到客戶端。

(3)客戶端輸出轉換:對于確有必要輸出腳本代碼到客戶端執(zhí)行、開發(fā)JavaScript API等應用場景,在客戶端使用定義好的腳本函數(shù)進行過濾,如JS中的innerText()、textContent()、innerHTML()函數(shù)和jQuery中的text()函數(shù)。

(4)設置HTTP內容安全策略:內容安全策略(Content Security Policy,簡稱CSP)采用白名單作機制限制頁面可以包含哪些來源的內容,可在HTTP Header中發(fā)送或在HTML meta屬性中聲明。正確設置CSP后,瀏覽器會阻止非法來源的外部內容(如上例中的example.com),能夠緩解XSS攻擊。

(5)在Web服務器配置Cookie的HttpOnly屬性,起到在發(fā)生XSS攻擊防止Cookie被盜取的作用。

上述前3點是筆者推薦必須要做的事情,不可完全依賴于后兩點,因為用戶瀏覽器存在多種品牌和多個版本,不完全可信,攻擊者可以結合瀏覽器自身漏洞進行組合攻擊。

4 文件上傳漏洞

4.1 利用原理分析

很多網站都有文件上傳功能,如附件上傳、圖片上傳,攻擊者可利用網站自身的文件上傳功能,上傳木馬、病毒、后門程序等至服務器,并偽裝成可執(zhí)行或可解釋文件運行,造成信息竊取、破壞,結合其他漏洞就可以輕易獲得控制器。成熟的木馬、病毒、后門程序能在網絡上輕易獲取,利用文件上傳漏洞進行攻擊,上手難度低但威脅非常大,同樣需要引起高度重視。

4.2 防范技術

(1)文件擴展名檢查:對上傳文件的擴展名進行檢查,采用白名單機制,只允許需要的文件上傳,如:只允許上傳擴展名為jpg、png的文件,拒絕其他文件上傳。但部分老版本的操作系統(tǒng)存在空格和dot漏洞,老版本的Web服務器也存在解析漏洞,文件擴展名檢查可被繞過。

(2)Content-Type檢查:每種文件都有唯一的Content-Type,可對上傳文件的Content-Type檢查確定文件類型,達到只允許需要的文件上傳目的。但可以使用相關工具篡改文件的Content-Type,達到欺騙檢查程序的目的。

(3)限制Web服務器行為:配置Web服務器和解釋器,禁止上傳文件保存目錄下的文件被解釋器解釋,禁止特定文件的HTTP訪問權限,比如在PHP的doc_root或user_dir中排除掉上傳文件保存目錄,在Apache中Directory設置中禁止允許的上傳文件之外的文件被訪問。通過這兩點措施,即便非法文件上傳,也不能被訪問和被解釋,可較大程度減少威脅。

(4)限制目錄權限:通過服務器操作系統(tǒng)文件系統(tǒng)權限配置上傳文件保存目錄的權限為只允許讀取、寫入而不能運行,可以控制病毒木馬對操作系統(tǒng)的影響。

(5)安裝殺毒/威脅防護軟件并及時升級,對上傳的文件進行實時檢測和病毒查殺。

文件上傳漏洞的封堵較為復雜,上述5點不一定完全涵蓋,但在實際操作中不能遺漏其中之一。

5 結束語

本文介紹了三種最常見的Web 漏洞,對其原理進行了簡要的分析,并對軟件編碼中需要應用的防范技術進行了研討,希望軟件開發(fā)人員能在開發(fā)過程嚴格按規(guī)范編碼,做到邏輯嚴密、層層過濾,提高軟件產品的安全性,同時也希望信息系統(tǒng)管理人員能了解基本的漏洞利用原理,有針對性地開展網絡安全工作。

[1]王云,郭外萍,陳承歡.Web項目中的SQL注入問題研究與防范方法[J].計算機工程與設計,2010,31(05):976-978+1016.

[2]金濤,霍旭磊,王亞麗.XSS的攻擊利用與防護策略研究[J].網絡安全技術與應用,2021(01):14-16.

[3]武云蕾. Web應用的SQL注入測試工具的設計與實現(xiàn)[D].西安電子科技大學,2019.

[4]秦亞芬. 存儲型跨站腳本漏洞關鍵技術研究與實現(xiàn)[D].北京工業(yè)大學,2019.

川北醫(yī)學院2016年校級科研發(fā)展計劃項目

猜你喜歡
攻擊者漏洞語句
漏洞
基于微分博弈的追逃問題最優(yōu)策略設計
自動化學報(2021年8期)2021-09-28 07:20:18
重點:語句銜接
正面迎接批判
愛你(2018年16期)2018-06-21 03:28:44
精彩語句
三明:“兩票制”堵住加價漏洞
漏洞在哪兒
兒童時代(2016年6期)2016-09-14 04:54:43
高鐵急救應補齊三漏洞
有限次重復博弈下的網絡攻擊行為研究
如何搞定語句銜接題
語文知識(2014年4期)2014-02-28 21:59:52
呼玛县| 锡林浩特市| 团风县| 德阳市| 怀远县| 栾川县| 缙云县| 贵港市| 乡宁县| 赣榆县| 湖北省| 威宁| 固始县| 广南县| 文山县| 钟山县| 和田市| 鹤岗市| 宿迁市| 广平县| 白河县| 丰都县| 平度市| 嘉定区| 新绛县| 鲜城| 兴海县| 南川市| 鄂尔多斯市| 阿尔山市| 文化| 苍溪县| 松原市| 忻城县| 镇巴县| 邯郸县| 左权县| 涿鹿县| 瓦房店市| 连城县| 揭东县|