![WEB安全性測試測試用例(基礎(chǔ))_第1頁](http://file3.renrendoc.com/fileroot_temp3/2022-7/2/f4d7dc25-9145-457c-9a4e-2a3cf90da366/f4d7dc25-9145-457c-9a4e-2a3cf90da3661.gif)
![WEB安全性測試測試用例(基礎(chǔ))_第2頁](http://file3.renrendoc.com/fileroot_temp3/2022-7/2/f4d7dc25-9145-457c-9a4e-2a3cf90da366/f4d7dc25-9145-457c-9a4e-2a3cf90da3662.gif)
![WEB安全性測試測試用例(基礎(chǔ))_第3頁](http://file3.renrendoc.com/fileroot_temp3/2022-7/2/f4d7dc25-9145-457c-9a4e-2a3cf90da366/f4d7dc25-9145-457c-9a4e-2a3cf90da3663.gif)
![WEB安全性測試測試用例(基礎(chǔ))_第4頁](http://file3.renrendoc.com/fileroot_temp3/2022-7/2/f4d7dc25-9145-457c-9a4e-2a3cf90da366/f4d7dc25-9145-457c-9a4e-2a3cf90da3664.gif)
![WEB安全性測試測試用例(基礎(chǔ))_第5頁](http://file3.renrendoc.com/fileroot_temp3/2022-7/2/f4d7dc25-9145-457c-9a4e-2a3cf90da366/f4d7dc25-9145-457c-9a4e-2a3cf90da3665.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、建立整體的威脅模型,測試溢出漏洞、信息泄漏、錯誤處理、SQL 注入、身份驗證和授權(quán)錯誤.1. 輸入驗證客戶端驗證 服務(wù)器端驗證(禁用腳本調(diào)試,禁用Cookies)1.輸入很大的數(shù)(如4,294,967,269),輸入很小的數(shù)(負(fù)數(shù))2.輸入超長字符,如對輸入文字長度有限制,則嘗試超過限制,剛好到達(dá)限制字?jǐn)?shù)時有何反應(yīng)3.輸入特殊字符,如:!#$%&*()_+<>:”|4.輸入中英文空格,輸入字符串中間含空格,輸入首尾空格5.輸入特殊字符串NULL,null,0x0d 0x0a6.輸入正常字符串7.輸入與要求不同類型的字符,如: 要求輸入數(shù)字則檢查正值,負(fù)值,零值(正零,負(fù)零)
2、,小數(shù),字母,空值; 要求輸入字母則檢查輸入數(shù)字8.輸入html和javascript代碼9.對于像回答數(shù)這樣需檢驗數(shù)字正確性的測試點,不僅對比其與問題最終頁的回答數(shù),還要對回答進(jìn)行添加刪除等操作后查看變化例如:1.輸入<html”>”gfhd</html>,看是否出錯;2.輸入<input type=”text” name=”user”/>,看是否出現(xiàn)文本框;3.輸入<script type=”text/javascript”>alert(“提示”)</script>看是否出現(xiàn)提示。關(guān)于上傳:1.上傳文件是否有格式限制,是否可以上傳
3、exe文件;2.上傳文件是否有大小限制,上傳太大的文件是否導(dǎo)致異常錯誤,上傳0K的文件是否會導(dǎo)致異常錯誤,上傳并不存在的文件是否會導(dǎo)致異常錯誤;3.通過修改擴(kuò)展名的方式是否可以繞過格式限制,是否可以通過壓包方式繞過格式限制;4.是否有上傳空間的限制,是否可以超過空間所限制的大小,如將超過空間的大文件拆分上傳是否會出現(xiàn)異常錯誤。5.上傳文件大小大于本地剩余空間大小,是否會出現(xiàn)異常錯誤。6.關(guān)于上傳是否成功的判斷。上傳過程中,中斷。程序是否判斷上傳是否成功。7.對于文件名中帶有中文字符,特殊字符等的文件上傳。下載:1. 避免輸入:.web.2. 修改命名后綴。關(guān)于URL:1.某些需登錄后或特殊用戶
4、才能進(jìn)入的頁面,是否可以通過直接輸入網(wǎng)址的方式進(jìn)入;2.對于帶參數(shù)的網(wǎng)址,惡意修改其參數(shù),(若為數(shù)字,則輸入字母,或很大的數(shù)字,或輸入特殊字符等)后打開網(wǎng)址是否出錯,是否可以非法進(jìn)入某些頁面;3.搜索頁面等url中含有關(guān)鍵字的,輸入html代碼或JavaScript看是否在頁面中顯示或執(zhí)行。4.輸入善意字符。UBB:url=http:/www.*.com 你的網(wǎng)站/url1.試著用各種方式輸入UBB代碼,比如代碼不完整,代碼嵌套等等.2.在UBB代碼中加入屬性,如樣式,事件等屬性,看是否起作用3.輸入編輯器中不存在的UBB代碼,看是否起作用url=javascript:alert('h
5、ello')鏈接/urlemail=javascript:alert('hello')EMail/emailemail=yangtao STYLE="background-image: url(javascript:alert('XSS')"yangtao/emailimg style="background-image:url(javascript:alert('alert(xss)')"/imgimg "onmouseover=alert('hello');"
6、/imgb STYLE="background-image: url(javascript:alert('XSS')"一首詩酸澀澀服務(wù)網(wǎng)/bi STYLE="background-image: url(javascript:alert('XSS')"一二三四五六七北京市/iu一二三四五六七北京市/ufont=微軟雅黑" STYLE="background-image: url(javascript:alert('XSS')"一二三四五六七北京市/fontsize=4"
7、 STYLE="background-image: url(javascript:alert('XSS')"一二三四五六七北京市/sizecolor=Red" STYLE="background-image: url(javascript:alert('XSS')"一二三四五六七北京市/coloralign=center" STYLE="background-image: url(javascript:alert('XSS')"一二三四五六七北京市/alignfloa
8、t=left" STYLE="background-image: url(javascript:alert('XSS')"一二三四五六七北京市/floatfont=微軟雅黑 STYLE="background-image: url(javascript:alert('XSS')"一二三四五六七北京市/fontsize=4 STYLE="background-image: url(javascript:alert('XSS')"一二三四五六七北京市/sizecolor=Red S
9、TYLE="background-image: url(javascript:alert('XSS')"一二三四五六七北京市/coloralign=center STYLE="background-image: url(javascript:alert('XSS')"一二三四五六七北京市/alignlist=1*一二三四五六七北京市/listindent一二三四五六七北京市/indentfloat=left STYLE="background-image: url(javascript:alert('XS
10、S')"一二三四五六七北京市/floatmedia=ra,400,300,02. 輸出編碼常用的測試輸入語句有:<input type="text"/><input/><input/ <script>alert('hello');</script>1.jpg" onmouseover="alert('xss')"></a><script>alert(xss);</script>http:/xxx
11、9;alert('xss');var/ a='a”>xss&<a=” ; b=”;alert(/xss/);/”<img src=“輸出內(nèi)容” border=“0” alt=“l(fā)ogo” />“”“”“ “ “”“ ”title=”對輸出數(shù)據(jù)到輸出數(shù)據(jù)的對比,看是否出現(xiàn)問題。3. 防止SQL注入Admin-or - and ( ) exec insert * % chr mid and 1=1 ; And 1=1 ; aNd 1=1 ; char(97)char(110)char(100) char(49)char(61)char(49)
12、 ; %20AND%201=2and 1=1 ; And 1=1 ; aNd 1=1 ;and 1=2 ; and 1=2and 2=2and user>0and (select count(*) from sysobjects)>0and (select count(*) from msysobjects)>0and (Select Count(*) from Admin)>=0and (select top 1 len(username) from Admin)>0(username 已知字段);exec master.xp_cmdshell “net use
13、r name password /add”;exec master.xp_cmdshell “net localgroup name administrators /add”and 0<>(select count(*) from admin)簡單的如where xtype=U,字符U對應(yīng)的ASCII碼是85,所以可以用where xtype=char(85)代替;如果字符是中文的,比如where name=用戶,可以用where name=nchar(29992)+nchar(25143)代替。4. 跨站腳本攻擊(XSS)對于 XSS,只需檢查 HTML 輸出并看看您輸入的內(nèi)容在
14、什么地方。它在一個 HREF 標(biāo)記中嗎?是否在 IFRAME 標(biāo)記中?它在 CLSID 標(biāo)記中嗎?在 IMG SRC 中嗎?某些 Flash 內(nèi)容的 PARAM NAME 是怎樣的?!#$%&*()_+<>,./?;'"-%3Cinput /%3E%3Cscript%3Ealert('XSS')%3C/script%3E<input type="text"/><input/><input/ <script>alert('xss')</script>&l
15、t;script>alert('xss');</script></script><script>alert(xss)</script>javascript:alert(/xss/)javascript:alert(/xss/)<img src="#" onerror=alert(/xss/)> <img src="#" style="Xss:expression(alert(/xss/);"> <img s
16、rc="#"/*/onerror=alert(/xss/) width=100>=><script>alert(document.cookie)</script> 1.jpg" onmouseover="alert('xss')"></a><script>alert(xss);</script>http:/xxx'alert('xss');var/ a='a”>xss&<"onmouseov
17、er=alert('hello');"&alert('hello'); >"'><script>alert(XSS')</script> >%22%27><img%20src%3d%22javascript:alert(%27XSS%27)%22>>"'><img%20src%3D%26%23x6a;%26%23x61;%26%23x76;%26%23x61;%26%23x73;%26%23x63;%26%23x72;%26
18、%23x69;%26%23x70;%26%23x74;%26%23x3a;alert(%26quot;XSS%26quot;)> AK%22%20style%3D%22background:url(javascript:alert(%27XSS%27)%22%20OS%22 %22%2Balert(%27XSS%27)%2B%22 <table background="javascript:alert(code)"></table> <object type=text/html data="javascript:alert(co
19、de);"></object> <body onload="javascript:alert(code)"></body> a?<script>alert(Vulnerable)</script><!-'">&:var from = $!rundata.Parameters.getString(from)'var from = ”;hackerFunction(document.cookie);”;5. 跨站請求偽造(CSRF)同個瀏覽器打開兩個頁面,一
20、個頁面權(quán)限失效后,另一個頁面是否可操作成功。當(dāng)頁面沒有CHECKCODE時,查看頁面源代碼,查是是否有token。如果頁面完全是展示頁面,是不會有token的。一、 用戶注冊只從用戶名和密碼角度寫了幾個要考慮的測試點,如果需求中明確規(guī)定了安全問題,Email,出生日期,地址,性別等等一系列的格式和字符要求,那就都要寫用例測了以等價類劃分和邊界值法來分析1.填寫符合要求的數(shù)據(jù)注冊: 用戶名字和密碼都為最大長度(邊界值分析,取上點)2.填寫符合要求的數(shù)據(jù)注冊 :用戶名字和密碼都為最小長度(邊界值分析,取上點)3.填寫符合要求的數(shù)據(jù)注冊:用戶名字和密碼都是非最大和最小長度的數(shù)據(jù)(邊界值分析,取內(nèi)點)
21、4.必填項分別為空注冊5.用戶名長度大于要求注冊1位(邊界值分析,取離點)6.用戶名長度小于要求注冊1位(邊界值分析,取離點)7.密碼長度大于要求注冊1位(邊界值分析,取離點)8.密碼長度小于要求注冊1位(邊界值分析,取離點)9.用戶名是不符合要求的字符注冊(這個可以劃分幾個無效的等價類,一般寫一兩個就行了,如含有空格,#等,看需求是否允許吧)10.密碼是不符合要求的字符注冊(這個可以劃分幾個無效的等價類,一般寫一兩個就行了)11.兩次輸入密碼不一致(如果注冊時候要輸入兩次密碼,那么這個是必須的)12.重新注冊存在的用戶13.改變存在的用戶的用戶名和密碼的大小寫,來注冊。(有的需求是區(qū)分大小寫
22、,有的不區(qū)分)14.看是否支持tap和enter鍵等;密碼是否可以復(fù)制粘貼;密碼是否以* 之類的加秘符號顯示備注:邊界值的上點、內(nèi)點和離點大家應(yīng)該都知道吧,呵呵,這里我就不細(xì)說了二、 修改密碼當(dāng)然具體情況具體分析哈不能一概而論實際測試中可能只用到其中幾條而已,比如銀行卡密碼的修改,就不用考慮英文和非法字符,更不用考慮那些之類的快捷鍵。而有的需要根據(jù)需求具體分析了,比如連續(xù)出錯多少次出現(xiàn)的提示,和一些軟件修改密碼要求一定時間內(nèi)有一定的修改次數(shù)限制等等。1.不輸入舊密碼,直接改密碼2.輸入錯誤舊密碼3.不輸入確認(rèn)新密碼4.不輸入新密碼5.新密碼和確認(rèn)新密碼不一致6.新密碼中有空格7.新密碼為空8.
23、新密碼為符合要求的最多字符9.新密碼為符合要求的最少字符10.新密碼為符合要求的非最多和最少字符11.新密碼為最多字符-112.新密碼為最少字符+113.新密碼為最多字符+114.新密碼為最少字符-115.新密碼為非允許字符(如有的密碼要求必須是英文和數(shù)字組成,那么要試漢字和符號等)16.看是否支持tap和enter鍵等;密碼是否可以復(fù)制粘貼;密碼是否以* 之類的加秘符號17.看密碼是否區(qū)分大小寫,新密碼中英文小寫,確認(rèn)密碼中英文大寫18.新密碼與舊密碼一樣能否修改成功另外一些其他的想法如下:1 要測試所有規(guī)約中約定可以輸入的特殊字符,字母,和數(shù)字,要求都可以正常輸入、顯示正常和添加成功2 關(guān)
24、注規(guī)約中的各種限制,比如長度,大否支持大小寫。3 考慮各種特殊情況,比如添加同名用戶,系統(tǒng)是否正確校驗給出提示信息,管理員帳戶是否可以刪除,因為有些系統(tǒng)管理員擁有最大權(quán)限,一旦刪除管理員帳戶,就不能在前臺添加,這給最終用戶會帶來很多麻煩。比較特殊的是,當(dāng)用戶名中包括了特殊字符,那么對這類用戶名的添加同名,修改,刪除,系統(tǒng)是否能夠正確實現(xiàn),我就遇到了一個系統(tǒng),添加同名用戶時,如果以前的用戶名沒有特殊字符,系統(tǒng)可以給出提示信息,如果以前的用戶名包含特殊字符,就不校驗在插入數(shù)據(jù)庫的時候報錯。后來查到原因了,原來是在java中拼SQL語句的時候,因為有"_",所以就調(diào)用了一個方法在
25、“_”,前面加了一個轉(zhuǎn)義字符,后來發(fā)現(xiàn)不該調(diào)用這個方法。所以去掉就好了。所以對待輸入框中的特殊字符要多關(guān)注。4 數(shù)值上的長度 之類的,包括出錯信息是否合理 5 特殊字符:比如。 / ' " </html> 這些是否會造成系統(tǒng)崩潰6 注入式bug:比如密碼輸入個or 1=17 登錄后是否會用明文傳遞參數(shù)8 訪問控制(不知道這個算不算):登錄后保存里面的鏈接,關(guān)了瀏覽器直接復(fù)制鏈接看能不能訪問。輸入框測試1驗證輸入與輸出的是否信息一致;2輸入框之前的標(biāo)題是否正確;3對特殊字符的處理,尤其是輸入信息徐需要發(fā)送到數(shù)據(jù)庫的。特殊字符包括:'(單引號)、"(
26、雙引號)、(中括號)、()(小括號)、(大括號)、;(分號)、<>(大于小于號)4對輸入框輸入超過限制的字符的處理,一般非特殊的沒有作出限制的在255byte左右;5輸入框本身的大小、長度;6不同內(nèi)碼的字符的輸入;7對空格、TAB字符的處理機(jī)制;8字符本身顯示的顏色;9密碼輸入窗口轉(zhuǎn)換成星號或其它符號;10密碼輸入框?qū)ζ渲械男畔⑦M(jìn)行加密,防止采用破解星號的方法破解;11按下ctrl和alt鍵對輸入框的影響;12對于新增、修改、注冊時用的輸入框,有限制的,應(yīng)該輸入時作出提示,指出不允許的或者標(biāo)出允許的;13對于有約束條件要求的輸入框應(yīng)當(dāng)在條件滿足時輸入框的狀態(tài)發(fā)生相應(yīng)的改變,比如選了
27、湖南就應(yīng)該列出湖南下面的市,或者選了某些條件之后,一些輸入框會關(guān)閉或轉(zhuǎn)為只讀狀態(tài);14輸入類型;根據(jù)前面的欄位標(biāo)題判斷該輸入框應(yīng)該輸入哪些內(nèi)容算是合理的。例如,是否允許輸入數(shù)字或字母,不允許輸入其他字符等。15.輸入長度;數(shù)據(jù)庫字段有長度定義,當(dāng)輸入過長時,提交數(shù)據(jù)是否會出錯。16.輸入狀態(tài);當(dāng)處于某種狀態(tài)下,輸入框是否處于可寫或非可寫狀態(tài)。例如,系統(tǒng)自動給予的編號等欄位作為唯一標(biāo)識,當(dāng)再次處于編輯狀態(tài)下,輸入框欄位應(yīng)處于不可寫狀態(tài),如果可寫對其編輯的話,可能會造成數(shù)據(jù)重復(fù)引起沖突等。17如果是會進(jìn)行數(shù)據(jù)庫操作的輸入框,還可以考慮輸入SQL中的一些特殊符號如單引號等,有時會有意想不到的錯誤出現(xiàn)
28、18輸入類型輸入長度是否允許復(fù)制粘貼為空的情況空格的考慮半角全角測試對于密碼輸入框要考慮顯示的內(nèi)容是* 輸入錯誤時的提示信息及提示信息是否準(zhǔn)確19可以先了解你要測試的輸入框在軟件系統(tǒng)的某個功能中所扮演的角色,然后了解其具體的輸入條件,在將輸入條件按照有效等價類,無效等價類,邊界值等方法進(jìn)行測試用例的設(shè)計。20關(guān)鍵字有大小寫混合的情況;21關(guān)鍵字中含有一個或多個空格的情況,包括前空格,中間空格(多個關(guān)鍵字),和后空格;22關(guān)鍵字中是否支持通配符的情況(視功能而定);23關(guān)鍵字的長度分別為9、10、11個字符時的情況;24關(guān)鍵字是valid,但是沒有匹配搜索結(jié)果的情況;25輸
29、入html的標(biāo)簽會出現(xiàn)哪些問題?輸入<html> 會出現(xiàn)什么問題呢?(這條是我自己發(fā)現(xiàn)的,在網(wǎng)上也沒找到類似的東東,呵呵,大家湊合著看吧)安全測試方面:給出一些特別的關(guān)鍵字,比如 or 1=1, 這樣的關(guān)鍵字如果不被處理就直接用到數(shù)據(jù)庫查詢中去,后果可想而知。用戶體驗相關(guān)我登錄失敗的時候沒有任何提示,這沒什么,反正提示也只是說失敗進(jìn)去后發(fā)現(xiàn)顏色變更很強(qiáng)烈刺得我一眨眼,不過多看幾次就習(xí)慣了。點擊某個鏈接的時候出現(xiàn)錯誤頁面,刷新后就好了,難道是隨機(jī)錯誤?保存文字的時候沒有成功提示,不過能成功保存就算了。瀏覽記錄的時候竟然出現(xiàn)錯誤頁面,原來我沒有選記錄就瀏覽了,我自己操作不規(guī)范嘛。刪除記
30、錄的時候發(fā)現(xiàn)選錯了,想取消的時候卻提示刪除成功,都沒有確認(rèn)提示,只能下次看仔細(xì)點了。查詢時字母鍵被茶杯壓住了多輸了點字符,竟然出現(xiàn)錯誤頁面,下次把東西整理好。無聊隨便點點幾個鏈接,竟然沒有反應(yīng),既然不用,那就不要做出來嘛??纯醋约荷蟼鞯膱D片效果如何,這個怎么不顯示?多試幾次發(fā)現(xiàn)名字不包含中文就好了,下次注意下。改改字體字號顏色美化環(huán)境嘛,怎么格式那里不顯示正確的字體字號呢,將就用吧。這里的記錄條數(shù)怎么這么多???原來是沒有刪除按鈕,看來下次不能隨便加了。這個結(jié)束時間怎么在開始時間前?。吭瓉頉]有進(jìn)行控制,下面的人執(zhí)行時還是自己改過來吧。上次我在這里看見的圖片呢?刷新后就出來了,怎么和我玩捉迷藏呢?
31、多輸了點內(nèi)容,保存時候提示太多了,點確定后發(fā)現(xiàn)被清空了,我一個小時的工作??!這張圖片真不錯,但是按鈕呢,按鈕呢?按鈕被擠掉了我怎么編輯啊。聽說F5是刷新點一下看看。怎么好像變成了登錄界面?剛學(xué)了怎么用TAB鍵,確實很方便。TAB一下。跑哪去了,怎么一片空白啊?玩游戲的人點擊速度那么快,我也來試試。怎么一雙擊就出錯了?我找錯別字是很厲害的,這不就發(fā)現(xiàn)“同意”寫成了“統(tǒng)一”。這里提示只能輸入1100,我偏要輸入9999保存看看,怎么系統(tǒng)不能用了?這里一點擊就出現(xiàn)IE錯誤,硬是不彈出我需要的窗口。這個查詢按鈕怎么灰掉了?這么多記錄讓我一頁一頁翻過去找啊。上傳第二個附件的時候怎么把第一個擠掉了啊,會擠
32、掉也要提示一下嘛。一個頁面上打開的記錄太多了,變體都用省略了,要是鼠標(biāo)放上去浮動顯示完整標(biāo)題就方便多了。這幾條記錄有依存關(guān)系,刪了一條其他就沒了,提示都沒有,早知道我就用編輯了這條記錄怎么好像是昨天的,我記得今天更新了???原來編輯后的記錄沒有傳到引用的地方。最最奇怪的是昨天上傳時候正常的圖片今天就不能顯示了。我記得沒有只能顯示一天的功能???這里怎么沒有任何按鈕呢,看手冊才知道竟然要用右鍵進(jìn)行操作,怎么突然冒出個異類?。窟@里怎么能增加兩條相同的記錄呢?不控制一下天知道手下那些愣頭青會做出什么來。這里的菜單一層一層又一層,足足有五層,把我頭都繞暈了我記得哪里說過最好不要超過三層的。這個界面看起來怎
33、么這么別扭啊,是字體太大了,是按鈕太小了,還是功能太多了,怎么不是管理員登錄進(jìn)來也能管理啊,那我這個管理員的身份不是多此一舉嗎?刪除的時候提示Error,幸虧我英語水平好,可是你換成中文不行嗎?這條記錄不是刪除了嗎,怎么還能引用啊,到時候出錯了怎么辦,難道還要我記住刪了那些記錄?經(jīng)過精心編輯,我發(fā)了一條通知,怎么用普通用戶查看的時候是默認(rèn)的字體字號啊?這幾個頁面上的當(dāng)前日期怎么是固定不變的啊,這都是去年的日期了,不會是開發(fā)時候的吧。讓W(xué)eb站點崩潰最常見的七大原因磁盤已滿導(dǎo)致系統(tǒng)無法正常運(yùn)行的最可能的原因是磁盤已滿。一個好的網(wǎng)絡(luò)管理員會密切關(guān)注磁盤的使用情況,隔一定的時間,就需要將磁盤上的一些
34、負(fù)載轉(zhuǎn)存到備份存儲介質(zhì)中(例如磁帶)。日志文件會很快用光所有的磁盤空間。Web服務(wù)器的日志文件、SQL*Net的日志文件、JDBC日志文件,以及應(yīng)用程序服務(wù)器日志文件均與內(nèi)存泄漏有同等的危害??梢圆扇〈胧⑷罩疚募4嬖谂c操作系統(tǒng)不同的文件系統(tǒng)中。日志文件系統(tǒng)空間已滿時Web服務(wù)器也會被掛起,但機(jī)器自身被掛起的幾率已大大減低。C指針錯誤用C或C+編寫的程序,如Web服務(wù)器API模塊,有可能導(dǎo)致系統(tǒng)的崩潰,因為只要間接引用指針(即,訪問指向的內(nèi)存)中出現(xiàn)一個錯誤,就會導(dǎo)致操作系統(tǒng)終止所有程序。另外,使用了糟糕的C指針的Java模擬量(analog)將訪問一個空的對象引用。Java中的空引用通常不
35、會導(dǎo)致立刻退出JVM,但是前提是程序員能夠使用異常處理方法恰當(dāng)?shù)靥幚礤e誤。在這方面,Java無需過多的關(guān)注,但使用 Java對可靠性進(jìn)行額外的度量則會對性能產(chǎn)生一些負(fù)面影響。內(nèi)存泄漏C/C+程序還可能產(chǎn)生另一個指針問題:丟失對已分配內(nèi)存的引用。當(dāng)內(nèi)存是在子程序中被分配時,通常會出現(xiàn)這種問題,其結(jié)果是程序從子程序中返回時不會釋放內(nèi)存。如此一來,對已分配的內(nèi)存的引用就會丟失,只要操作系統(tǒng)還在運(yùn)行中,則進(jìn)程就會一直使用該內(nèi)存。這樣的結(jié)果是,曾占用更多的內(nèi)存的程序會降低系統(tǒng)性能,直到機(jī)器完全停止工作,才會完全清空內(nèi)存。解決方案之一是使用代碼分析工具(如Purify)對代碼進(jìn)行仔細(xì)分析,以找出可能出現(xiàn)的
36、泄漏問題。但這種方法無法找到由其他原因引起的庫中的泄漏,因為庫的源代碼是不可用的。另一種方法是每隔一段時間,就清除并重啟進(jìn)程。Apache的Web服務(wù)器就會因這個原因創(chuàng)建和清除子進(jìn)程。雖然Java本身并無指針,但總的說來,與C程序相比, Java程序使用內(nèi)存的情況更加糟糕。在Java中,對象被頻繁創(chuàng)建,而直到所有到對象的引用都消失時,垃圾回收程序才會釋放內(nèi)存。即使運(yùn)行了垃圾回收程序,也只會將內(nèi)存還給虛擬機(jī)VM,而不是還給操作系統(tǒng)。結(jié)果是:Java程序會用光給它們的所有堆,從不釋放。由于要保存實時(Just In Time,JIT)編譯器產(chǎn)生的代碼,Java程序的大小有時可能會膨脹為最大堆的數(shù)倍
37、之巨。還有一個問題,情況與此類似。從連接池分配一個數(shù)據(jù)庫連接,而無法將已分配的連接還回給連接池。一些連接池有活動計時器,在維持一段時間的靜止?fàn)顟B(tài)之后,計時器會釋放掉數(shù)據(jù)庫連接,但這不足以緩解糟糕的代碼快速泄漏數(shù)據(jù)庫連接所造成的資源浪費。進(jìn)程缺乏文件描述符如果已為一臺Web服務(wù)器或其他關(guān)鍵進(jìn)程分配了文件描述符,但它卻需要更多的文件描述符,則服務(wù)器或進(jìn)程會被掛起或報錯,直至得到了所需的文件描述符為止。文件描述符用來保持對開放文件和開放套接字的跟蹤記錄,開放文件和開放套接字是Web服務(wù)器很關(guān)鍵的組成部分,其任務(wù)是將文件復(fù)制到網(wǎng)絡(luò)連接。默認(rèn)時,大多數(shù)shell有64個文件描述符,這意味著每個從shell啟動的進(jìn)程可以同時打開64個文件和網(wǎng)絡(luò)連接。大多數(shù)shell都有一個內(nèi)嵌的 ulimit命令可以增加文件描述符的數(shù)目。線程死鎖由多線程帶來的性能改善是以可靠性為代價的,主要是因為這樣有可能產(chǎn)生線程死鎖。線程死鎖時,第一個線程等待第二個線程釋放資源,而同時第二個線程又在等待第一個線程釋放資源。我們來想像這樣一種情形:在人行道上兩個人迎面相遇
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 涉外建設(shè)工程施工合同
- 家居行業(yè)設(shè)計風(fēng)格與文化內(nèi)涵的融合
- 三農(nóng)行業(yè)手冊合作社運(yùn)營
- 廚房承包合同書參考
- Go語言基礎(chǔ)概念與實踐作業(yè)指導(dǎo)書
- 內(nèi)部審計與風(fēng)險管理作業(yè)指導(dǎo)書
- 擔(dān)保書之擔(dān)保型買賣合同
- 物流信息管理系統(tǒng)作業(yè)指導(dǎo)書
- 私人教練勞動合同
- 石油化工行業(yè)安全環(huán)保管理體系建設(shè)方案
- 二零二五年度大型自動化設(shè)備買賣合同模板2篇
- 2024版金礦居間合同協(xié)議書
- 2025內(nèi)蒙古匯能煤化工限公司招聘300人高頻重點提升(共500題)附帶答案詳解
- PFMEA模板完整版文檔
- GB/T 4214.1-2017家用和類似用途電器噪聲測試方法通用要求
- GB/T 11822-2000科學(xué)技術(shù)檔案案卷構(gòu)成的一般要求
- 壓力管道基本知識課件
- 小學(xué)英語 國際音標(biāo) 練習(xí)及答案
- 優(yōu)秀班主任經(jīng)驗交流課件-班主任經(jīng)驗交流課件
- 2023年廣州金融控股集團(tuán)有限公司招聘筆試題庫及答案解析
- 血液科品管圈匯報-PPT課件
評論
0/150
提交評論