<ruby id="h6500"><table id="h6500"></table></ruby>
    1. <ruby id="h6500"><video id="h6500"></video></ruby>
          1. <progress id="h6500"><u id="h6500"><form id="h6500"></form></u></progress>
            • 軟件測試技術(shù)
            • 軟件測試博客
            • 軟件測試視頻
            • 開(kāi)源軟件測試技術(shù)
            • 軟件測試論壇
            • 軟件測試沙龍
            • 軟件測試資料下載
            • 軟件測試雜志
            • 軟件測試人才招聘
              暫時(shí)沒(méi)有公告

            字號: | 推薦給好友 上一篇 | 下一篇

            Web性能測試和CC攻擊和方法和防范

            發(fā)布: 2010-9-07 09:10 | 作者: 網(wǎng)絡(luò )轉載 | 來(lái)源: 領(lǐng)測軟件測試網(wǎng)采編 | 查看: 50次 | 進(jìn)入軟件測試論壇討論

            領(lǐng)測軟件測試網(wǎng)

            Web性能測試和CC攻擊和方法和防范

            1、Web性能測試

              Web性能測試涉及的范圍太廣,但一般web開(kāi)發(fā)者在程序上線(xiàn)以后很多都曾遇到過(guò)性能的問(wèn)題。普遍表現為頁(yè)面速度開(kāi)始急劇變慢,正常訪(fǎng)問(wèn)時(shí)間變的很長(cháng),或則干脆給你拋出異常錯誤頁(yè)面。這里會(huì )涉及到很多可能發(fā)生的情況,舉例幾個(gè)最主要發(fā)生的情況:

              * 數據庫連接超過(guò)最大限制,目前一般表現為程序的連接池滿(mǎn),拒絕了與數據庫的連接。

              * 數據庫死鎖

              * Web Server 超過(guò)最大連接數(一般在虛擬主機上才會(huì )限制)

              * 內存泄漏

              * Http連接數太多,即訪(fǎng)問(wèn)量超過(guò)了機器和軟件設計正常所能提供的服務(wù)

              2、CC攻擊

              CC主要是用來(lái)攻擊頁(yè)面的.大家都有這樣的經(jīng)歷,就是在訪(fǎng)問(wèn)論壇時(shí),如果這個(gè)論壇比較大,訪(fǎng)問(wèn)的人比較多,打開(kāi)頁(yè)面的速度會(huì )比較慢,訪(fǎng)問(wèn)的人越多,論壇的頁(yè)面越多,數據庫就越大,被訪(fǎng)問(wèn)的頻率也越高,占用的系統資源也就相當可觀(guān)。

              一個(gè)靜態(tài)頁(yè)面不需要服務(wù)器多少資源,甚至可以說(shuō)直接從內存中讀出來(lái)發(fā)給你就可以了,但是論壇就不一樣了,我看一個(gè)帖子,系統需要到數據庫中判斷我是否有讀讀帖子的權限,如果有,就讀出帖子里面的內容,顯示出來(lái)——這里至少訪(fǎng)問(wèn)了2次數據庫,如果數據庫的體積有200MB大小,系統很可能就要在這200MB大小的數據空間搜索一遍,這需要多少的CPU資源和時(shí)間?如果我是查找一個(gè)關(guān)鍵字,那么時(shí)間更加可觀(guān),因為前面的搜索可以限定在一個(gè)很小的范圍內,比如用戶(hù)權限只查用戶(hù)表,帖子內容只查帖子表,而且查到就可以馬上停止查詢(xún),而搜索肯定會(huì )對所有的數據進(jìn)行一次判斷,消耗的時(shí)間是相當的大.

              CC就是充分利用了這個(gè)特點(diǎn),模擬多個(gè)用戶(hù)(多少線(xiàn)程就是多少用戶(hù))不停的進(jìn)行訪(fǎng)問(wèn)(訪(fǎng)問(wèn)那些需要大量數據操作,就是需要大量CPU時(shí)間的頁(yè)面).這一點(diǎn)用一個(gè)一般的性能測試軟件就可以做到大量模擬用戶(hù)并發(fā)。

              假設服務(wù)器A對Search.asp的處理時(shí)間需要0.01S(多線(xiàn)程只是時(shí)間分割,對結論沒(méi)有影響),也就是說(shuō)他一秒可以保證100個(gè)用戶(hù)的Search請求,服務(wù)器允許的最大連接時(shí)間為60s,那么我們使用CC模擬120個(gè)用戶(hù)并發(fā)連接,那么經(jīng)過(guò) 1分鐘,服務(wù)器的被請求了7200次,處理了6000次,于是剩下了1200個(gè)并發(fā)連接沒(méi)有被處理.有的朋友會(huì )說(shuō):丟連接!丟連接!問(wèn)題是服務(wù)器是按先來(lái)后到的順序丟的,這1200個(gè)是在最后10秒的時(shí)候發(fā)起的,想丟?!還早,經(jīng)過(guò)計算,服務(wù)器滿(mǎn)負開(kāi)始丟連接的時(shí)候,應該是有7200個(gè)并發(fā)連接存在隊列, 然后服務(wù)器開(kāi)始120個(gè)/秒的丟連接,我們發(fā)動(dòng)的連接也是120個(gè)/秒,服務(wù)器永遠有處理不完的連接,服務(wù)器的CPU 100%并長(cháng)時(shí)間保持,然后丟連接的60秒服務(wù)器也判斷處理不過(guò)來(lái)了,新的連接也處理不了,這樣服務(wù)器達到了超級繁忙狀態(tài).

              我們假設服務(wù)器處理Search只用了0.01S,也就是10毫秒(這個(gè)速度你可以去各個(gè)有開(kāi)放時(shí)間顯示的論壇看看),我們使用的線(xiàn)程也只有120,很多服務(wù)器的丟連接時(shí)間遠比60S長(cháng),我們的使用線(xiàn)程遠比120多,可以想象可怕了吧,而且客戶(hù)機只要發(fā)送了斷開(kāi),連接的保持是代理做的,而且當服務(wù)器收到SQL請求,肯定會(huì )進(jìn)入隊列,不論連接是否已經(jīng)斷開(kāi),而且服務(wù)器是并發(fā)的,不是順序執行,這樣使得更多的請求進(jìn)入內存請求,對服務(wù)器負擔更大.

              3、防范方法

              說(shuō)了攻擊原理,大家肯定會(huì )問(wèn),那么怎么防御?使用硬件防火墻我不知道如何防范,除非你完全屏蔽頁(yè)面訪(fǎng)問(wèn),我的方法是通過(guò)頁(yè)面的編寫(xiě)實(shí)現防御.

              1. 使用Cookie認證.這時(shí)候朋友說(shuō)CC里面也允許Cookie,但是這里的Cookie是所有連接都使用的,所以啟用IP Cookie認證就可以了.

              2. 利用Session.這個(gè)判斷比Cookie更加方便,不光可以IP認證,還可以防刷新模式,在頁(yè)面里判斷刷新,是刷新就不讓它訪(fǎng)問(wèn),沒(méi)有刷新符號給它刷新符號.給些示范代碼吧,Session:

              程序代碼:

              〈%

              if session(“refresh”)〈〉 1 then

              Session(“refresh”)=session(“refresh”) 1

              Response.redirect “index.asp”

              End if

              %〉

              這樣用戶(hù)第一次訪(fǎng)問(wèn)會(huì )使得Refresh=1,第二次訪(fǎng)問(wèn),正常,第三次,不讓他訪(fǎng)問(wèn)了,認為是刷新,可以加上一個(gè)時(shí)間參數,讓多少時(shí)間允許訪(fǎng)問(wèn),這樣就限制了耗時(shí)間的頁(yè)面的訪(fǎng)問(wèn),對正?蛻(hù)幾乎沒(méi)有什么影響.

              3.通過(guò)代理發(fā)送的HTTP_X_FORWARDED_FOR變量來(lái)判斷使用代理攻擊機器的真實(shí)IP,這招完全可以找到發(fā)動(dòng)攻擊的人,當然,不是所有的代理服務(wù)器都發(fā)送,但是有很多代理都發(fā)送這個(gè)參數.詳細代碼:

              程序代碼:

              〈%

              Dim fsoObject

              DimtsObject

              dim file

              ifRequest.ServerVariables(HTTP_X_FORWARDED_FOR)= then

              response.write無(wú)代理訪(fǎng)問(wèn)

              response.end

              endif

              Set fsoObject =Server.CreateObject(scrīpting.FileSystemObject)

              file = server.mappath(CCLog.txt)

              if notfsoObject.fileexists(file)then

              fsoObject.createtextfilefile,true,false

              end if

              settsObject = fsoObject.OpenTextFile(file,8)

              tsObject.WritelineRequest.ServerVariables(HTTP_X_FORWARDED_FOR)&[&Request.ServerVariables(REMOTE_ADDR)&]&now()

              Set fsoObject = Nothing

              Set tsObject =Nothing

              response.write有代理訪(fǎng)問(wèn)

              %〉

              這樣會(huì )生成CCLog.txt,它的記錄格式是:真實(shí)IP [代理的IP]時(shí)間,看看哪個(gè)真實(shí)IP出現的次數多,就知道是誰(shuí)在攻擊了.將這個(gè)代碼做成Conn.asp文件,替代那些連接數據庫的文件,這樣所有的數據庫請求就連接到這個(gè)文件上,然后馬上就能發(fā)現攻擊的人.

              4.還有一個(gè)方法就是把需要對數據查詢(xún)的語(yǔ)句做在Redirect后面,讓對方必須先訪(fǎng)問(wèn)一個(gè)判斷頁(yè)面,然后Redirect過(guò)去.

              5.在存在多站的服務(wù)器上,嚴格限制每一個(gè)站允許的IP連接數和CPU使用時(shí)間,這是一個(gè)很有效的方法.

              CC的防御要從代碼做起,其實(shí)一個(gè)好的頁(yè)面代碼都應該注意這些東西,還有SQL注入,不光是一個(gè)入侵工具,更是一個(gè)DDOS缺口,大家都應該在代碼中注意.舉個(gè)例子吧,某服務(wù)器,開(kāi)動(dòng)了5000線(xiàn)的CC攻擊,沒(méi)有一點(diǎn)反應,因為它所有的訪(fǎng)問(wèn)數據庫請求都必須一個(gè)隨機參數在Session里面,全是靜態(tài)頁(yè)面,沒(méi)有效果.突然發(fā)現它有一個(gè)請求會(huì )和外面的服務(wù)器聯(lián)系獲得,需要較長(cháng)的時(shí)間,而且沒(méi)有什么認證,開(kāi)800線(xiàn)攻擊,服務(wù)器馬上滿(mǎn)負荷了.

              代碼層的防御需要從點(diǎn)點(diǎn)滴滴做起,一個(gè)腳本代碼的錯誤,可能帶來(lái)的是整個(gè)站的影響,甚至是整個(gè)服務(wù)器的影響,慎之!

            延伸閱讀

            文章來(lái)源于領(lǐng)測軟件測試網(wǎng) http://kjueaiud.com/

            TAG: web Web WEB 攻擊 性能測試


            關(guān)于領(lǐng)測軟件測試網(wǎng) | 領(lǐng)測軟件測試網(wǎng)合作伙伴 | 廣告服務(wù) | 投稿指南 | 聯(lián)系我們 | 網(wǎng)站地圖 | 友情鏈接
            版權所有(C) 2003-2010 TestAge(領(lǐng)測軟件測試網(wǎng))|領(lǐng)測國際科技(北京)有限公司|軟件測試工程師培訓網(wǎng) All Rights Reserved
            北京市海淀區中關(guān)村南大街9號北京理工科技大廈1402室 京ICP備10010545號-5
            技術(shù)支持和業(yè)務(wù)聯(lián)系:info@testage.com.cn 電話(huà):010-51297073

            軟件測試 | 領(lǐng)測國際ISTQBISTQB官網(wǎng)TMMiTMMi認證國際軟件測試工程師認證領(lǐng)測軟件測試網(wǎng)

            老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月
              <ruby id="h6500"><table id="h6500"></table></ruby>
              1. <ruby id="h6500"><video id="h6500"></video></ruby>
                    1. <progress id="h6500"><u id="h6500"><form id="h6500"></form></u></progress>