一次new就會(huì)為相應(yīng)的對(duì)象開(kāi)辟一個(gè)空間
目前創(chuàng)新互聯(lián)已為成百上千家的企業(yè)提供了網(wǎng)站建設(shè)、域名、雅安服務(wù)器托管、網(wǎng)站托管、服務(wù)器租用、企業(yè)網(wǎng)站設(shè)計(jì)、巫山網(wǎng)站維護(hù)等服務(wù),公司將堅(jiān)持客戶(hù)導(dǎo)向、應(yīng)用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶(hù)和合作伙伴齊心協(xié)力一起成長(zhǎng),共同發(fā)展。
連續(xù)new,值是改變a1的指向,之前對(duì)象由于沒(méi)有引用指向,將會(huì)變?yōu)椤袄薄?/p>
java的垃圾回收機(jī)制,會(huì)在適當(dāng)?shù)臅r(shí)機(jī),回收這塊內(nèi)存。
解析惡意代碼的危害機(jī)制與防范
摘要:在當(dāng)今互聯(lián)網(wǎng)時(shí)代,很多人還在受著網(wǎng)頁(yè)惡意代碼的困擾,在網(wǎng)站代碼編輯過(guò)程中,更會(huì)因?yàn)閻阂獯a的轉(zhuǎn)載使用導(dǎo)致整個(gè)網(wǎng)頁(yè)的癱瘓。本文就“惡意代碼”的危害和防范來(lái)進(jìn)行深入解析,以激發(fā)我們的安全防范意識(shí),積極應(yīng)對(duì)來(lái)自網(wǎng)絡(luò)的安全威脅。
關(guān)鍵詞:惡意代碼Java Applet JavaScript ActiveX
一、惡意代碼綜述
惡意代碼主要包括計(jì)算機(jī)病毒(Virus)、蠕蟲(chóng)(Worm)、木馬程序(Trojan Horse)、后門(mén)程序(Backdoor)、邏輯炸彈(Logic Bomb)等等。它使用SCRIPT語(yǔ)言編寫(xiě)的一些惡意代碼利用IE的漏洞來(lái)實(shí)現(xiàn)病毒植入。當(dāng)用戶(hù)登錄某些含有網(wǎng)頁(yè)病毒的網(wǎng)站時(shí),網(wǎng)頁(yè)病毒便被悄悄激活,這些病毒一旦激活,可以利用系統(tǒng)的一些資源進(jìn)行破壞。
隨著互聯(lián)網(wǎng)信息技術(shù)的不斷發(fā)展,代碼的“惡意”性質(zhì)及其給用戶(hù)造成的危害已經(jīng)引起普遍的關(guān)注,因此我們有必要對(duì)惡意代碼進(jìn)行一番了解,讓其危害降低至最低程度。
二、惡意代碼的表現(xiàn)形式
(一)網(wǎng)頁(yè)病毒類(lèi)惡意代碼
網(wǎng)頁(yè)病毒類(lèi)惡意代碼,顧名思義就是利用軟件或系統(tǒng)操作平臺(tái)的安全漏洞,通過(guò)嵌入在網(wǎng)頁(yè)上HTML標(biāo)記語(yǔ)言?xún)?nèi)的Java Applet 應(yīng)用程序、JavaScript 腳本程序、ActiveX 網(wǎng)絡(luò)交互支持自動(dòng)執(zhí)行,強(qiáng)行修改用戶(hù)注冊(cè)表及系統(tǒng)配置,或非法控制用戶(hù)系統(tǒng)資源、盜取用戶(hù)文件、惡意刪除文件,甚至格式化硬盤(pán)的非法惡意程序。
根據(jù)目前較流行的常見(jiàn)網(wǎng)頁(yè)病毒的作用對(duì)象及表現(xiàn)特征,網(wǎng)頁(yè)病毒可以歸納為以下兩大種類(lèi):
(1)通過(guò)Java Script、Applet、ActiveX 編輯的腳本程序修改IE 瀏覽器,表現(xiàn)為:
A 默認(rèn)主頁(yè)(首頁(yè))被修改;B 主頁(yè)設(shè)置被屏蔽鎖定,且設(shè)置選項(xiàng)無(wú)效不可修改;C 默認(rèn)的IE 搜索引擎被修改;D 鼠標(biāo)右鍵菜單被添加非法網(wǎng)站廣告鏈接等。
(2)通過(guò)Java Script、Applet、ActiveX 編輯的腳本程序修改用戶(hù)操作系統(tǒng),表現(xiàn)為:
A 開(kāi)機(jī)出現(xiàn)對(duì)話(huà)框(通常都是用戶(hù)不知所云的內(nèi)容);B 系統(tǒng)正常啟動(dòng)后,但I(xiàn)E 被鎖定網(wǎng)址自動(dòng)調(diào)用打開(kāi);C 格式化硬盤(pán);D 非法讀取或盜取用戶(hù)文件;E 鎖定禁用注冊(cè)表,編輯reg,轉(zhuǎn)自[星論文網(wǎng)] 注冊(cè)表文件格式時(shí)出現(xiàn)打開(kāi)方式錯(cuò)誤。
(二)腳本類(lèi)惡意代碼
腳本實(shí)際上就是程序,一般都是由應(yīng)用程序提供的編輯語(yǔ)言。應(yīng)用程序包括Java Script、VBScript、應(yīng)用程序的宏和操作系統(tǒng)的批處理語(yǔ)言等。腳本在每一種應(yīng)用程序中所起的作用都是不相同的,比如在網(wǎng)頁(yè)中可實(shí)現(xiàn)各種動(dòng)態(tài)效果,在OFFICE 中通常是以“宏”來(lái)執(zhí)行一系列命令和指令,可以實(shí)現(xiàn)任務(wù)執(zhí)行的自動(dòng)化,以提供效率,或者制造宏病毒。
(三)漏洞攻擊類(lèi)代碼
是利用軟件或者操作系統(tǒng)的漏洞而編寫(xiě)的程序,對(duì)用戶(hù)系統(tǒng)或者網(wǎng)絡(luò)服務(wù)器進(jìn)行攻擊。比如黑客利用微軟IE 瀏覽器漏洞,編寫(xiě)漏洞攻擊代碼對(duì)用戶(hù)進(jìn)行攻擊。
三、惡意代碼的實(shí)現(xiàn)機(jī)制
惡意代碼的行為表現(xiàn)各異,破壞程序千差萬(wàn)別,但基本作用機(jī)制大體相同,其整個(gè)作用過(guò)程分為6個(gè)部分:
①侵入系統(tǒng)。侵入系統(tǒng)是惡意代碼實(shí)現(xiàn)其惡意目的的必要條件。惡意代碼入侵的途徑很多,如:從互聯(lián)網(wǎng)下載的程序本身就可能含有惡意代碼;接受已經(jīng)感染惡意代碼的電子郵件;從光盤(pán)或U盤(pán)往系統(tǒng)上安裝未經(jīng)審查的軟件;黑客或者攻擊者故意將惡意代碼植入系統(tǒng)等。
②維持或提升現(xiàn)有特權(quán)。惡意代碼的傳播與破壞必須盜用用戶(hù)或者進(jìn)程的合法權(quán)限才能完成。
③隱蔽策略。為了不讓系統(tǒng)發(fā)現(xiàn)惡意代碼已經(jīng)侵入系統(tǒng),惡意代碼可能會(huì)改名、刪除源文件或者修改系統(tǒng)的安全策略來(lái)隱藏自己。
④潛伏。惡意代碼侵入系統(tǒng)后,等待一定的條件,病毒具有足夠的權(quán)限時(shí),就發(fā)作進(jìn)行破壞活動(dòng)。
⑤破壞。惡意代碼的本質(zhì)具有破壞性,其目的是造成信息丟失、泄密,破壞系統(tǒng)完整性等。
⑥重復(fù)1至5對(duì)新的目標(biāo)實(shí)施攻擊過(guò)程。
四、惡意代碼的防范方法
目前,惡意代碼防范方法主要分為兩方面:基于主機(jī)的惡意代碼防范方法和基于網(wǎng)絡(luò)的惡意代碼防范方法。
(一)基于主機(jī)的惡意代碼防范方法
①基于特征的掃描技術(shù):基于主機(jī)的惡意代碼防范方法是目前檢測(cè)惡意代碼最常用的技術(shù)。掃描程序工作之前,必須先建立惡意代碼的特征文件,根據(jù)特征文件中的特征串,在掃描文件中進(jìn)行匹配查找。用戶(hù)通過(guò)更新特征文件更新掃描軟件,查找最新的惡意代碼版本。這種技術(shù)廣泛地應(yīng)用于目前的反病毒引擎中。
②校驗(yàn)和:校驗(yàn)和是一種保護(hù)信息資源完整性的控制技術(shù),例如Hash 值和循環(huán)冗余碼等。只要文件內(nèi)部有一個(gè)比特發(fā)生了變化,校驗(yàn)和值就會(huì)改變。未被惡意代碼感染的系統(tǒng)首先會(huì)生成檢測(cè)數(shù)據(jù),然后周期性地使用校驗(yàn)和法檢測(cè)文件的改變情況。
③安全操作系統(tǒng)對(duì)惡意代碼的防范:惡意代碼成功入侵的重要一環(huán)是,獲得系統(tǒng)的控制權(quán),使操作系統(tǒng)為它分配系統(tǒng)資源。無(wú)論哪種惡意代碼,無(wú)論要達(dá)到何種惡意目的,都必須具有相應(yīng)的權(quán)限。否則它將不能實(shí)現(xiàn)其預(yù)定的惡意目標(biāo),或者僅能夠?qū)崿F(xiàn)其部分惡意目標(biāo)。
(二)基于網(wǎng)絡(luò)的惡意代碼防范方法
由于惡意代碼具有相當(dāng)?shù)膹?fù)雜性和行為不確定性,惡意代碼的防范需要多種技術(shù)綜合應(yīng)用,包括惡意代碼監(jiān)測(cè)與預(yù)警、惡意代碼傳播抑制、惡意代碼漏洞自動(dòng)修復(fù)、惡意代碼阻斷等?;诰W(wǎng)絡(luò)的惡意代碼防范方法包括:惡意代碼檢測(cè)防御和惡意代碼預(yù)警。
這些主要是網(wǎng)頁(yè)惡意代碼,也就是網(wǎng)頁(yè)病毒造成的危害。而用腳本編寫(xiě)的蠕蟲(chóng)病毒的危害就更大了,它不再是針對(duì)一臺(tái)計(jì)算機(jī),而是迅速傳播,對(duì)網(wǎng)絡(luò)上所有計(jì)算機(jī)造成危害,直至網(wǎng)絡(luò)被拖垮最后崩潰。
五、結(jié)語(yǔ)
在互聯(lián)網(wǎng)信息化高速發(fā)展的今天,任何軟件在編寫(xiě)時(shí)或多或少都有自己的漏洞,為此我們應(yīng)該做到:
1)安全設(shè)置。我們上網(wǎng)瀏覽時(shí)不能抱有僥幸心理,不關(guān)心安全設(shè)置,認(rèn)為惡意代碼與我無(wú)緣,對(duì)最基本的瀏覽器安全設(shè)置問(wèn)題也不關(guān)心,從而降低了系統(tǒng)抵御惡意代碼的免疫能力,致使系統(tǒng)在遭遇惡意代碼時(shí)不能幸免于難。
2)不瀏覽來(lái)歷不明的網(wǎng)站。不要輕易去瀏覽一些來(lái)歷不明的網(wǎng)站和下載相關(guān)內(nèi)容。
3)軟件升級(jí),安裝系統(tǒng)補(bǔ)丁。軟件要及時(shí)更新版本,尤其是操作系統(tǒng),一定要?!按颉毖a(bǔ)丁常升級(jí)。
4)安裝殺毒軟件(防火墻)。安裝并及時(shí)將殺毒軟件(防火墻)升級(jí)至最新版本,同時(shí)開(kāi)啟實(shí)時(shí)監(jiān)控功能并不定期殺毒,最大限度地把惡意代碼拒之門(mén)外。 本文出自: http://,轉(zhuǎn)自[星論文網(wǎng)]
對(duì)于每個(gè)編碼人員來(lái)說(shuō),避免重復(fù)代碼可能是大家都想做的。對(duì)于有一定經(jīng)驗(yàn)(對(duì)基本的OO原則有一定經(jīng)驗(yàn))的開(kāi)發(fā)人員來(lái)說(shuō),大部分情況下都能比較自然地避免重復(fù)代碼的問(wèn)題,寫(xiě)代碼的時(shí)候,感覺(jué)有邏輯重復(fù)的情況,會(huì)很自然的憑感覺(jué)經(jīng)驗(yàn)做相應(yīng)的處理和復(fù)用。以下是個(gè)人經(jīng)驗(yàn),供新手參考。 既然我們?cè)谟肑ava之類(lèi)的面向?qū)ο蟮恼Z(yǔ)言編碼,那么重復(fù)代碼可以大致分為如下兩種情況: 1、類(lèi)型體系之內(nèi)(父類(lèi)型和子類(lèi)型、子類(lèi)型之間)存在重復(fù)邏輯代碼 2、類(lèi)型體系之外的重復(fù)代碼 【類(lèi)型體系內(nèi)的重復(fù)代碼處理】 1、如果重復(fù)代碼屬于類(lèi)型本身操作(即應(yīng)該是以實(shí)例方法存在),則很自然的應(yīng)用重構(gòu)技巧,公共代碼往上走。如果Sub Type之間有這種重復(fù)代碼,把重復(fù)代碼遷移到DefaultAdatper中。 2、如果重復(fù)代碼不屬于類(lèi)型本身操作(即應(yīng)該是以靜態(tài)方法存在),則需要判斷一下這種靜態(tài)代碼的功能使用范圍: A、如果是非常全局性的,例如有關(guān)java流的輔助操作,則應(yīng)該果斷的抽取出來(lái),封裝到一個(gè)Utility工具類(lèi)中,例如可以叫做IOUtil。把這個(gè)Utility類(lèi)放置到非常底層模塊中,這樣上層很多功能模塊中都可以使用,否則可能會(huì)導(dǎo)致上層多個(gè)模塊中都有類(lèi)似IOUtil的類(lèi),又是重復(fù)代碼。1publicclassIOUtil{2/**3 *工具類(lèi),不需要產(chǎn)生實(shí)例。但是也不需要應(yīng)用單態(tài)?。?!4*/5privateIOUtil(){}67publicstaticInputStreambuildInputSteam(Filefile){//}89//其他公共靜態(tài)操作10} B、如果這種靜態(tài)操作只對(duì)本類(lèi)型體系有意義,則有兩種常用的處理方法:第一種是把這種靜態(tài)方法遷移到基類(lèi)DefaultAdapter中,但是不要在DefaultAdapter中放置過(guò)多的類(lèi)似靜態(tài)方法;第二種是把這種靜態(tài)方法封裝到一個(gè)helper助手類(lèi)中,例如MyTypeHelper,其中放置了MyType類(lèi)型體系中需要使用的一些靜態(tài)方法。如果第一種DefaultAdapter中堆放了較多的靜態(tài)方法,則可以用helper助手類(lèi)的方式。1publicclassMyTypeHelper{2/**3 *助手類(lèi),不需要產(chǎn)生實(shí)例。但是也不需要應(yīng)用單態(tài)!??!4*/5privateMyTypeHelper(){}67publicstaticbooleanvalidateParamer(Objectparamer){//}89//其他公共靜態(tài)操作10} 這個(gè)helper一般需要和接口、默認(rèn)適配類(lèi)一起暴露,便于擴(kuò)展子類(lèi)型使用。示意圖如下: 【類(lèi)型體系之外的重復(fù)代碼處理】 類(lèi)型體系之外的重復(fù)代碼處理相對(duì)就很簡(jiǎn)單了,根據(jù)重復(fù)代碼功能適用范圍,封裝到對(duì)應(yīng)的Util類(lèi)或者Helper類(lèi)中。這里就不細(xì)講了~_~ 【有關(guān)公用代碼的幾個(gè)概念】 個(gè)人意見(jiàn),僅供參考。 助手類(lèi)(Helper class) :我覺(jué)得首先這個(gè)類(lèi)產(chǎn)生的目的是為特定模塊或者特定功能服務(wù)的(助手嗎~_~),不是全局的。而且完全可以隱藏在特定模塊內(nèi)部,很多時(shí)候不需要暴露。Helper類(lèi)的命名要有針對(duì)性,不能搞成一個(gè)麻辣燙,里面的靜態(tài)操作既為這種功能服務(wù),又為那種功能服務(wù),盡量做個(gè)忠臣,不要同時(shí)當(dāng)多個(gè)主子的助手。 工具類(lèi)(Utility class) :一般是全局的,往往有一定普世價(jià)值,也就是說(shuō)往往是全局通用的。 例如你在做一個(gè)模塊,這個(gè)模塊功能是處理表單,則關(guān)于處理表單的一些公用靜態(tài)操作就應(yīng)該放置到該模塊的一個(gè)助手類(lèi)中,名稱(chēng)類(lèi)似于FormProcesserHelper。再有一個(gè)導(dǎo)出報(bào)表的功能,則對(duì)應(yīng)的助手類(lèi)可以稱(chēng)之為ExportReportHelper,建議這兩個(gè)helper不要混在一起。有人可能會(huì)說(shuō),這樣會(huì)不會(huì)導(dǎo)致大量的助手類(lèi)呢?這邊有個(gè)粒度把握的問(wèn)題(經(jīng)驗(yàn)會(huì)發(fā)生作用~_~),但是只要是助手類(lèi)命名規(guī)范,則一個(gè)助手類(lèi)的名字就基本上可以告訴用戶(hù)你提供什么樣的服務(wù)了。 假如你現(xiàn)在處理的是有關(guān)IO操作的重復(fù)代碼,則需要遷移到全局的工具類(lèi)中,因?yàn)檫@樣的操作往往適應(yīng)于全局的。 Facade class(門(mén)面類(lèi)) :這個(gè)乍看起來(lái)和助手類(lèi)有點(diǎn)像,往往是綁定于特定模塊。但是,要搞清楚,門(mén)面類(lèi)是用來(lái)封裝子系統(tǒng)的,代理對(duì)模塊常用核心功能的訪(fǎng)問(wèn)的,針對(duì)用戶(hù)需要的常用場(chǎng)景提供一些輔助操作,幫助用戶(hù)更好的使用此模塊的主要功能。 面向客戶(hù)端或者其他子系統(tǒng)或模塊的,不是用來(lái)處理對(duì)應(yīng)模塊中重復(fù)代碼的 ?。。∮嘘P(guān)詳細(xì)信息,請(qǐng)參加Facade設(shè)計(jì)模式的文檔。 【注意】Helper class、Utility class、Facade class一般都不需要生實(shí)例,暴露的都是靜態(tài)操作,更不需要誤寫(xiě)成單態(tài),別濫用單態(tài)?。?!后記:: 關(guān)于重復(fù)代碼的處理,個(gè)人以為既需要技巧(別人總結(jié)出來(lái)的技巧),更需要經(jīng)驗(yàn)(經(jīng)驗(yàn)往往給你感覺(jué),跟著感覺(jué)走一般就不會(huì)太離譜~_~)。 希望對(duì)開(kāi)發(fā)新手有作用~_~
重復(fù)代碼很容易產(chǎn)生,主要是因?yàn)殚_(kāi)發(fā)的本質(zhì)就是復(fù)制粘貼,找一段類(lèi)似的邏輯做一個(gè)簡(jiǎn)單的額修改就上線(xiàn)了。這樣做在開(kāi)發(fā)的時(shí)候可能沒(méi)啥問(wèn)題,但是一旦重復(fù)代碼變多,面對(duì)一個(gè)簡(jiǎn)單的修改修改就要在整個(gè)項(xiàng)目中不斷地找,一個(gè)個(gè)修改,這樣速度和效率不能保證,而且很容易出錯(cuò)。因而,使用能放棄死代碼的編譯器可以使模板代碼產(chǎn)生更小的二進(jìn)制