<strike id="mxvdv"><dfn id="mxvdv"></dfn></strike>
<li id="mxvdv"></li>
<dl id="mxvdv"></dl>

        <dl id="mxvdv"><td id="mxvdv"></td></dl>

        藍鷗旗下品牌:鷗課學院
        全國咨詢電話:13152008057
        您的位置: 首頁 > 技術文章 > 如何防范常見的 Web 攻擊

        如何防范常見的 Web 攻擊

        2017-05-04 藍鷗
        6228人 瀏覽:

        timg.jpg

        今天,從開發(fā)人員的角度,并結合我在開發(fā)過程中遇到的問題,說說《如何防范常見的Web攻擊》話題。

        SQL注入攻擊

        SQL注入攻擊,這個是最常聊到的話題,使用過Java的開發(fā)人員,第一個反應就是一定要使用預編譯的PrepareStatement,是吧?

        什么是SQL注入攻擊?

        攻擊者在HTTP請求中注入惡意的SQL代碼,服務器使用參數(shù)構建數(shù)據(jù)庫SQL命令時,惡意SQL被一起構造,并在數(shù)據(jù)庫中執(zhí)行。

        用戶登錄,輸入用戶名 lianggzone,密碼 ‘ or ‘1’=’1 ,如果此時使用參數(shù)構造的方式,就會出現(xiàn)select * from user where name = 'lianggzone' and password = '' or '1'='1',不管用戶名和密碼是什么內容,使查詢出來的用戶列表不為空。

        現(xiàn)在還會存在SQL注入攻擊么?

        這個問題在使用了預編譯的PrepareStatement后,安全性得到了很大的提高,但是真實情況下,很多同學并不重視,還是會留下漏洞的。舉個例子,看看,大家的代碼中對sql中in操作,使用了預編譯,還是仍然還是通過字符串拼接呢?

        如何防范SQL注入攻擊?

        使用預編譯的PrepareStatement是必須的,但是一般我們會從兩個方面同時入手。

        1. 不用拼接SQL字符串。

        2. 使用預編譯的PrepareStatement。

        3. 有效性檢驗。(為什么服務端還要做有效性檢驗?第一準則,外部都是不可信的,防止攻擊者繞過Web端請求)

        4. 過濾SQL需要的參數(shù)中的特殊字符。比如單引號、雙引號。

        XSS攻擊

        什么是XSS攻擊

        跨站點腳本攻擊,指攻擊者通過篡改網(wǎng)頁,嵌入惡意腳本程序,在用戶瀏覽網(wǎng)頁時,控制用戶瀏覽器進行惡意操作的一種攻擊方式。

        假設頁面上有一個表單如果,用戶輸入的不是一個正常的字符串,而是"/>,此時,頁面變成下面的內容,在輸入框input的后面帶上了一段腳本代碼。

        這端腳本程序只是彈出一個消息框,并不會造成什么危害,攻擊的威力取決于用戶輸入了什么樣的腳本,只要稍微修改,便可使攻擊極具攻擊性。

        XSS攻擊有多可怕

        蠻早之前,我曾經(jīng)找了幾個網(wǎng)站做個測試,其實大家對XSS攻擊的防范還是不夠,都成功的注入了測試腳本。

        甚至,還有攻擊者提交惡意的javascript代碼的評論信息或者反饋信息(這些信息,正常客戶端沒有做xss校驗,會存在客戶端注入問題),所有訪問者訪問該內容時,都會執(zhí)行這段惡意的javascript代碼。

        如何防范XSS攻擊

        1. 前端,服務端,同時需要字符串輸入的長度限制。

        2. 前端,服務端,同時需要對HTML轉義處理。將其中的”<”,”>”等特殊字符進行轉義編碼。

        CSRF攻擊

        什么是CSRF攻擊

        跨站點請求偽造,指攻擊者通過跨站請求,以合法的用戶的身份進行非法操作??梢赃@么理解CSRF攻擊:攻擊者盜用你的身份,以你的名義向第三方網(wǎng)站發(fā)送惡意請求。CRSF能做的事情包括利用你的身份發(fā)郵件,發(fā)短信,進行交易轉賬,甚至盜取賬號信息。

        如何防范CSRF攻擊

        1. 安全框架,例如Spring Security。

        2. token機制。在HTTP請求中進行token驗證,如果請求中沒有token或者token內容不正確,則認為CSRF攻擊而拒絕該請求。

        3. 驗證碼。通常情況下,驗證碼能夠很好的遏制CSRF攻擊,但是很多情況下,出于用戶體驗考慮,驗證碼只能作為一種輔助手段,而不是最主要的解決方案。

        4. referer識別。在HTTP Header中有一個字段Referer,它記錄了HTTP請求的來源地址。如果Referer是其他網(wǎng)站,就有可能是CSRF攻擊,則拒絕該請求。但是,服務器并非都能取到Referer。很多用戶出于隱私保護的考慮,限制了Referer的發(fā)送。在某些情況下,瀏覽器也不會發(fā)送Referer,例如HTTPS跳轉到HTTP。

        文件上傳漏洞

        什么是文件上傳漏洞

        文件上傳漏洞,指的是用戶上傳一個可執(zhí)行的腳本文件,并通過此腳本文件獲得了執(zhí)行服務端命令的能力。

        許多第三方框架、服務,都曾經(jīng)被爆出文件上傳漏洞,比如很早之前的Struts2,以及富文本編輯器等等,可能被一旦被攻擊者上傳惡意代碼,有可能服務端就被人黑了。

        如何防范文件上傳漏洞

        1. 文件上傳的目錄設置為不可執(zhí)行。

        2. 判斷文件類型。在判斷文件類型的時候,可以結合使用MIME Type,后綴檢查等方式。因為對于上傳文件,不能簡單地通過后綴名稱來判斷文件的類型,因為攻擊者可以將可執(zhí)行文件的后綴名稱改為圖片或其他后綴類型,誘導用戶執(zhí)行。

        3. 對上傳的文件類型進行白名單校驗,只允許上傳可靠類型。

        4. 上傳的文件需要進行重新命名,使攻擊者無法猜想上傳文件的訪問路徑,將極大地增加攻擊成本,同時向shell.php.rar.ara這種文件,因為重命名而無法成功實施攻擊。

        5. 限制上傳文件的大小。

        6. 單獨設置文件服務器的域名。

        訪問控制

        一般來說,“基于URL的訪問控制”是最常見的。

        垂直權限管理

        訪問控制實際上是建立用戶與權限之間的對應關系,即“基于角色的訪問控制”,RBAC。不同角色的權限有高低之分。高權限角色訪問低權限角色的資源往往是被允許的,而低權限角色訪問高權限的資源往往被禁止的。在配置權限時,應當使用“最小權限原則”,并使用“默認拒絕”的策略,只對有需要的主體單獨配置”允許”的策略,這在很多時候能夠避免發(fā)生“越權訪問”。

        例如,Spring Security, Apache Shiro都可以建立垂直權限管理。

        水平權限管理

        水平權限問題在同一個角色上,系統(tǒng)只驗證了訪問數(shù)據(jù)的角色,沒有對角色內的用戶做細分,由于水平權限管理是系統(tǒng)缺乏一個數(shù)據(jù)級的訪問控制所造成的,因此水平權限管理又可以稱之為“基于數(shù)據(jù)的訪問控制”。

        舉個理解,比如我們之前的一個助手產(chǎn)品,客戶端用戶刪除評論功能,如果沒有做水平權限管理,即設置只有本人才可以刪除自己的評論,那么用戶通過修改評論id就可以刪除別人的評論這個就存在危險的越權操作。

        這個層面,基本需要我們業(yè)務層面去處理,但是這個也是最為經(jīng)常遺落的安全點。

        1. 廣告1
        2. 廣告2
        3. 廣告3
        4. 廣告4
        久久人人爽人人爽人人丝袜V,国产黄片在线浏览,猛人精品无码精品在线播放,亚洲色欲久久www

        <strike id="mxvdv"><dfn id="mxvdv"></dfn></strike>
        <li id="mxvdv"></li>
        <dl id="mxvdv"></dl>

            <dl id="mxvdv"><td id="mxvdv"></td></dl>