亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        一種基于Apache的CSRF防御模塊的實(shí)現(xiàn)

        2017-10-13 20:09:28王馬龍
        關(guān)鍵詞:頁(yè)面用戶

        ◆王馬龍 劉 健

        ?

        一種基于Apache的CSRF防御模塊的實(shí)現(xiàn)

        ◆王馬龍 劉 健

        (四川大學(xué)計(jì)算機(jī)學(xué)院 四川 610065)

        跨站請(qǐng)求偽造(CSRF)漏洞的存在十分廣泛,而且是開(kāi)放式web應(yīng)用安全項(xiàng)目(OWASP)統(tǒng)計(jì)的Top 10 Web攻擊列表中最具威脅的漏洞之一。目前最具代表性的兩種CSRF防御工具是CSRFGuard[2]和jCSRF[3]。針對(duì)CSRFGuard會(huì)將JS動(dòng)態(tài)創(chuàng)建的動(dòng)態(tài)HTTP請(qǐng)求誤認(rèn)為是CSRF攻擊;jCSRF以代理模式部署,會(huì)增大web服務(wù)器的響應(yīng)時(shí)間這兩大問(wèn)題,本文通過(guò)重寫(xiě)XMLHttpRequest對(duì)象onsend的方法,向HTTP頭注入CSRF防御Token,基于Apache web 服務(wù)器實(shí)現(xiàn)了一個(gè)CSRF防御模塊mod_anticsrf,去除了代理的網(wǎng)絡(luò)通信開(kāi)銷。實(shí)驗(yàn)結(jié)果表明,mod_anticsrf支持動(dòng)態(tài)HTTP請(qǐng)求,且?guī)缀醪挥绊憌eb服務(wù)器的響應(yīng)時(shí)間。

        CSRF;Apache;動(dòng)態(tài)HTTP請(qǐng)求;性能

        0 引言

        跨站請(qǐng)求偽造(Cross-Site Request Forgery,CSRF)攻擊是一種當(dāng)今互聯(lián)網(wǎng)上廣泛存在的Web攻擊。近幾年來(lái),CSRF在OWASP(Open Web Application Security Project)每年的十大安全漏洞中[1]始終能夠穩(wěn)居前列。它并不是一種新型的攻擊,但是其攻擊原理簡(jiǎn)單,極具破壞性。由于CSRF漏洞存在于大量的Web應(yīng)用程序中,如果通過(guò)手動(dòng)修改程序源代碼的方式來(lái)修復(fù)漏洞,工作量將十分巨大?;诖耍疚幕贏pacheWeb服務(wù)器實(shí)現(xiàn)了一種CSRF防御模塊。

        1 CSRF防御工具現(xiàn)狀

        CSRFGuard[2]和jCSRF[3]都是基于一次性Token的方法實(shí)現(xiàn)的CSRF防御工具。CSRFGuard是由OWASP發(fā)布的CSRF防御技術(shù)。它是一個(gè)實(shí)現(xiàn)了 Token模式的JAVA類庫(kù)[4],通過(guò)生成隨機(jī)的Token,而攻擊者無(wú)法構(gòu)造有效請(qǐng)求,從而對(duì)CSRF攻擊進(jìn)行防御。它的缺點(diǎn)是:(1)只有Javaweb應(yīng)用服務(wù)器能使用;(2)它使用JavaScript DOM注入Token的方法是在頁(yè)面加載完后遍歷頁(yè)面所有元素,對(duì)“form”或“a”等元素或?qū)傩圆迦隩oken。因此,CSRFGuard比較適合處理靜態(tài)頁(yè)面。如果有表單在頁(yè)面加載完后由JavaScript腳本動(dòng)態(tài)創(chuàng)建,其提交的請(qǐng)求不能被CSRFGuard插入Token,相關(guān)頁(yè)面的操作也可能因缺少Token被阻止或者可能遭受CSRF攻擊。jCSRF解決了CSRFGuard的第二個(gè)缺點(diǎn),并提出了一種同域和跨域CSRF防御的協(xié)議。但是jCSRF也有兩個(gè)不足之處:(1)目前不支持GET方法;(2)它以HTTP代理的方式部署,會(huì)增大系統(tǒng)時(shí)延。

        2 基于Apache的CSRF防御模塊的設(shè)計(jì)與實(shí)現(xiàn)

        2.1 基于Apache的CSRF防御模塊的設(shè)計(jì)

        圖1 jCSRF部署圖

        如圖1所示,jCSRF以http代理的形式部署在Web服務(wù)器的前方,用戶的每次請(qǐng)求都必須由jCSRF轉(zhuǎn)發(fā)一次,給系統(tǒng)帶來(lái)了很大的網(wǎng)絡(luò)時(shí)延。

        為減少了瀏覽器與代理之間的網(wǎng)絡(luò)IO造成的開(kāi)銷,本文將mod_anticsrf設(shè)計(jì)為一個(gè)可動(dòng)態(tài)加載的模塊,它可根據(jù)用戶的配置由Apache Http服務(wù)器動(dòng)態(tài)加載/卸載。它的部署模式如下圖2所示:

        mod_anticsrf的工作流程如圖3所示:

        (1)接收用戶的HTTP請(qǐng)求;

        (2)判斷該請(qǐng)求是否為此會(huì)話的初始請(qǐng)求(即第一次請(qǐng)求),如果是,則跳轉(zhuǎn)至第(3)步;否則,跳轉(zhuǎn)至第(4)步;

        (3)生成隨機(jī)Token,構(gòu)造CSRF防御js腳本,然后將js腳本注入到HTTP響應(yīng)中,跳轉(zhuǎn)至第(7)步;

        (4)從HTTP請(qǐng)求中提取Token,成功則跳轉(zhuǎn)至第(5)步;否則,跳轉(zhuǎn)至第(6)步;

        (5)判斷Token是否合法,如果合法,則跳轉(zhuǎn)至第(3)步;否則,跳轉(zhuǎn)至第(6)步;

        (6)阻斷當(dāng)前HTTP請(qǐng)求,視配置決定是否需要記錄日志,跳轉(zhuǎn)至第(1)步;

        (7)將HTTP響應(yīng)頁(yè)面發(fā)送給用戶,跳轉(zhuǎn)至第(1)步。

        圖3 mod_anticsrf工作流程

        2.2 基于Apache的CSRF防御模塊的實(shí)現(xiàn)

        mod_anticsrf從架構(gòu)上來(lái)看主要分為兩個(gè)部分。一部分是用C語(yǔ)言實(shí)現(xiàn)的Apache模塊,這部分主要負(fù)責(zé)Token的構(gòu)造、JS代碼的注入和Token的驗(yàn)證;另一部分是要注入到用戶響應(yīng)頁(yè)面的JS代碼,這段JS代碼負(fù)責(zé)在用戶發(fā)起請(qǐng)求的時(shí)候?qū)oken添加到HTTP的頭部或請(qǐng)求體里面。在實(shí)現(xiàn)mod_anticsrf的過(guò)程中,主要解決以下幾個(gè)技術(shù)問(wèn)題:

        2.2.1 Token的構(gòu)造

        Token的構(gòu)造過(guò)程是mod_anticsrf的重要部分,為了區(qū)分攻擊者和正常用戶傳遞過(guò)來(lái)的Token,我們從用戶請(qǐng)求中提取一個(gè)能唯一標(biāo)識(shí)用戶的特征來(lái)構(gòu)造Token,構(gòu)造過(guò)程如下:

        2.2.2 Token的注入

        在服務(wù)器端添加Token至HTTP響應(yīng)頁(yè)面是一種注入Token的方法,但是這樣添加Token會(huì)對(duì)整個(gè)頁(yè)面進(jìn)行遍歷,從而導(dǎo)致服務(wù)器的延遲增大。本文采用了在用戶瀏覽器中通過(guò)JS腳本(anticsrf.js)的方式,動(dòng)態(tài)地在用戶的HTTP請(qǐng)求中添加Token。具體方法如下:

        為值;

        對(duì)于表單,遍歷dom樹(shù),找到所有的

        節(jié)點(diǎn),然后添加一個(gè)類型為hidden的子節(jié)點(diǎn),name設(shè)置為“csrfToken”,value設(shè)置為;

        對(duì)于Ajax請(qǐng)求,需要重寫(xiě)XMLHttpRequest對(duì)象的onsend方法以注入請(qǐng)求頭域“csrfToken:”,核心代碼如下:

        XMLHttpRequest.prototype.onsend = function(data){

        // 注入請(qǐng)求頭 "csrfToken:tokenValue"

        this.setRequestHeader("csrfToken",tokenValue);

        }

        2.2.3 在HTTP響應(yīng)中注入JS腳本

        注入JS腳本的步驟如下:

        找到標(biāo)簽,在它的前面插入對(duì)anticsrf.js的引用,即:

        找到標(biāo)簽,在它的前面插入對(duì)anticsrf.js中的主函數(shù)insertToken的調(diào)用代碼以傳入生成的Token,即:

        2.2.4 Token的提取和驗(yàn)證

        當(dāng)Apache接收到的HTTP請(qǐng)求不是當(dāng)前會(huì)話的初始請(qǐng)求時(shí),mod_anticsrf就要提取該請(qǐng)求中的Token,過(guò)程如下:

        (1)在HTTP請(qǐng)求頭中尋找csrfToken域,如果找到,說(shuō)明這是一個(gè)Ajax請(qǐng)求,取出它的Token值,跳轉(zhuǎn)至第(3)步;否則,跳轉(zhuǎn)至第(5)步;

        (2)在HTTP的請(qǐng)求參數(shù)和表單參數(shù)中尋找csrfToken域,如果找到,取出它的Token值,跳轉(zhuǎn)至第(3)步;否則跳轉(zhuǎn)至第(5)步;

        (6)提取本次請(qǐng)求的源IP地址,如果,則說(shuō)明請(qǐng)求合法,將該請(qǐng)求的控制權(quán)交還給Apache;否則,跳轉(zhuǎn)至第(7)步;

        (7)驗(yàn)證失敗,阻斷請(qǐng)求。

        3 實(shí)驗(yàn)及結(jié)果分析

        為測(cè)試mod_anticsrf能否支持JS動(dòng)態(tài)創(chuàng)建的HTTP請(qǐng)求,本文設(shè)計(jì)了一個(gè)簡(jiǎn)單的網(wǎng)頁(yè):changePassword.php,這個(gè)頁(yè)面模擬的是用戶改密碼的功能,它提交數(shù)據(jù)的方式是Ajax。從圖4可以看出,頁(yè)面能正常訪問(wèn),不會(huì)被誤認(rèn)為是CSRF攻擊。

        圖4 Ajax請(qǐng)求抓包

        本文還針對(duì)無(wú)CSRF防御、開(kāi)啟mod_anticsrf和使用jCSRF三種情況進(jìn)行了性能測(cè)試,測(cè)試方法為使用Apache開(kāi)源性能測(cè)試工具ab向服務(wù)器發(fā)起10000次請(qǐng)求,并發(fā)為100rps(具體命令為:ab -n 10000 -c 100 -p post.txt http://192.168.11.120/ changePassword.php),最終比較各種情況下的總耗時(shí)。結(jié)果如圖5所示:Apache在開(kāi)啟mod_anticsrf模塊之后基本不影響系統(tǒng)性能,而使用jCSRF卻會(huì)導(dǎo)致系統(tǒng)時(shí)延增加大約1/2。

        圖5性能對(duì)比圖

        由實(shí)驗(yàn)結(jié)果可以看出,由于Ajax請(qǐng)求頭里面被成功地注入了CSRF防御Token,所以它不會(huì)被判定為CSRF攻擊;而且,由于mod_anticsrf直接運(yùn)行在Apache進(jìn)程內(nèi),不會(huì)像jCSRF那樣需要與代理之間的網(wǎng)絡(luò)通信,所以幾乎不會(huì)增加系統(tǒng)時(shí)延。

        4 結(jié)束語(yǔ)

        本文基于Apache實(shí)現(xiàn)了一種CSRF防御模塊mod_anticsrf,可以避免mod_anticsrf將JS動(dòng)態(tài)創(chuàng)建的HTTP請(qǐng)求誤判為CSRF攻擊;此外,將mod_anticsrf以動(dòng)態(tài)模塊的方式部署于Apache服務(wù)器中,幾乎不會(huì)影響系統(tǒng)響應(yīng)時(shí)間?,F(xiàn)在,mod_anticsrf暫不支持jQuery等三方JS庫(kù);該模塊有待改進(jìn)以支持Web應(yīng)用中存在XSS漏洞的情況。

        [1]OWASP.“Top ten most critical web application security vulnerabilities”.http://www.owasp.org/index.php/OWASP_Top_Ten_Project,2013.

        [2]Boyan Chen,Pavol Zavarsky,Ron Ruhl and Dale Lindskog A Studyof the Effectiveness of CSRF Guard. 2011 IEEE International Conferenceon Privacy,Security,Risk,and Trust,and IEEE InternationalConference on Social Computing .

        [3]Riccardo Pelizzi,R. Sekar. A server- and browser- transparent CSRF defensefor web 2.0 applications[C]// ACSAC'11:Proceedings of the 27th AnnualComputer Security Applications Conference. New York:ACM,2011.

        [4]OWASP.Category:OWASP CSRFGuard Project [EB/ OL].https://www.owasp.org/index.php/CSRFGuard,2016.

        國(guó)家重點(diǎn)研發(fā)計(jì)劃(2016yfb00604,2016yfb00605),國(guó)家自然科學(xué)基金項(xiàng)目(61572334)。

        猜你喜歡
        頁(yè)面用戶
        微信群聊總是找不到,打開(kāi)這個(gè)開(kāi)關(guān)就好了
        大狗熊在睡覺(jué)
        刷新生活的頁(yè)面
        關(guān)注用戶
        商用汽車(2016年11期)2016-12-19 01:20:16
        關(guān)注用戶
        商用汽車(2016年6期)2016-06-29 09:18:54
        關(guān)注用戶
        商用汽車(2016年4期)2016-05-09 01:23:12
        Camera360:拍出5億用戶
        100萬(wàn)用戶
        如何獲取一億海外用戶
        同一Word文檔 縱橫頁(yè)面并存
        欧美激情在线不卡视频网站| 美女视频黄是免费| 国产精品性色av麻豆| 一色桃子中文字幕人妻熟女作品| 国产自偷自偷免费一区| 欧美日韩精品一区二区三区高清视频| 国产白浆流出一区二区| 日韩av天堂综合网久久| 亚洲一区二区三区内裤视 | 妺妺窝人体色www看人体| 久久国产精品二国产精品| 久久久亚洲精品午夜福利| 国产亚洲中文字幕久久网| 亚洲一区二区三区综合免费在线| 高清午夜福利电影在线| 成人激情五月天| 精品国产品欧美日产在线| 久久亚洲国产高清av一级 | 亚洲一区二区三区精品久久av | 亚洲av无码专区亚洲av| 国产精品无套粉嫩白浆在线| 91国产精品自拍在线观看| 精品国产拍国产天天人| 久久精品片| 最新日韩人妻中文字幕一区| 国产一区二区视频免费在| 国产真实夫妇视频| 久久频这里精品99香蕉| av天堂手机在线看片资源| 亚洲av乱码一区二区三区按摩 | 青青草视频华人绿色在线| 白白色免费视频一区二区在线| 亚洲精品国产一区二区| 国产精品厕所| 99久久国产综合精品女乱人伦| 日本高清视频一区二区| 中文字幕网伦射乱中文| 爽妇网国产精品| 中文字幕一区二区三区精品在线| 18禁裸体动漫美女无遮挡网站 | 久久亚洲精品成人av无码网站|