自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Linux安全編程:如何編寫(xiě)安全的應(yīng)用程序

系統(tǒng) Linux
在當(dāng)今聯(lián)網(wǎng)的世界中,軟件開(kāi)發(fā)人員必須知道如何編寫(xiě)安全的程序,然而人們還未廣泛認(rèn)識(shí)到這一信息,也未向人們廣泛講授過(guò)這一信息。

在當(dāng)今聯(lián)網(wǎng)的世界中,軟件開(kāi)發(fā)人員必須知道如何編寫(xiě)安全的程序,然而人們還未廣泛認(rèn)識(shí)到這一信息,也未向人們廣泛講授過(guò)這一信息。本文介紹了如何編寫(xiě)安全的應(yīng)用程序的基本思想,并討論了如何針對(duì)特定的應(yīng)用程序確定安全性需求。

歡迎來(lái)到不太友善的世界

案例 #1

味道聞起來(lái)很糟糕。兩個(gè)多月以來(lái),數(shù)十萬(wàn)加侖的污水流到了澳大利亞的公園、河流以及一家旅館的地面上,而無(wú)人知曉其原因。水生動(dòng)植物不斷地死亡,而且有一條小河中的水已經(jīng)變黑了。2000 年 4 月 23 日,當(dāng)警方逮捕了一名男子時(shí)才解開(kāi)了這個(gè)謎團(tuán),這名男子一直在使用計(jì)算機(jī)和無(wú)線電設(shè)備對(duì)管理污水和飲用水的機(jī)器進(jìn)行完全控制。他的動(dòng)機(jī)是什么呢?對(duì)其審訊的口供表明他正試圖獲得一份獲利豐厚的咨詢合同以解決他所造成的問(wèn)題。事實(shí)原本還要糟糕得多。

案例 #2

有一個(gè)小偷(只知道他叫“Maxus”)從在線音樂(lè)公司 CD Universe 偷了 35 萬(wàn)個(gè)信用卡號(hào),然后勒索 10 萬(wàn)美元贖金。當(dāng) CD Universe 拒絕支付贖金時(shí),Maxus 就公開(kāi)張貼了這些信用卡號(hào) - 這損害了 CD Universe 的顧客并使這些顧客有合理的理由轉(zhuǎn)而光顧其它商店。

案例 #3

CIA 最近了解到奧薩馬·本·拉登的基地恐怖分子組織對(duì)網(wǎng)絡(luò)恐怖活動(dòng)有著“非常濃厚的興趣”,這是人們先前所不相信的。鏈接到基地組織的計(jì)算機(jī)都可以獲得各種計(jì)算機(jī)“破解”工具,旨在引起災(zāi)難性的破壞。

它們正在攻擊您的程序 - 您準(zhǔn)備好了嗎?

計(jì)算機(jī)攻擊已成為一個(gè)非常嚴(yán)重的問(wèn)題。1997 年,CERT/CC 報(bào)告發(fā)生了 2134 起計(jì)算機(jī)安全性事件,并報(bào)告了 311 個(gè)截然不同的安全性漏洞;到 2002 年,所報(bào)告的計(jì)算機(jī)安全性事件已上升至 82094 起,而安全性漏洞則上升到 4129 個(gè)。計(jì)算機(jī)安全性協(xié)會(huì)(Computer Security Institute,CSI)和舊金山聯(lián)邦調(diào)查局(Federal Bureau of Investigation,F(xiàn)BI)計(jì)算機(jī)入侵小組于 2003 年調(diào)查了 503 家大型公司和政府機(jī)構(gòu),發(fā)現(xiàn)其中有 92% 的被調(diào)查者都報(bào)告受到過(guò)攻擊。這些被調(diào)查者中,有 78% 確認(rèn)他們的因特網(wǎng)連接經(jīng)常受到攻擊,并有 36% 確認(rèn)他們的內(nèi)部系統(tǒng)經(jīng)常受到攻擊。有 75% 的被調(diào)查者承認(rèn)他們受到了經(jīng)濟(jì)損失,盡管只有 47% 的被調(diào)查者可以確定他們損失的具體數(shù)目;但這些可以確定具體數(shù)目的組織的損失超過(guò)了 2 億美元。

攻擊持續(xù)升溫的原因有許多。計(jì)算機(jī)在不斷地聯(lián)網(wǎng),這使攻擊者能比較容易地攻擊世界范圍內(nèi)任何聯(lián)網(wǎng)的計(jì)算機(jī),而不會(huì)有什么風(fēng)險(xiǎn)。計(jì)算機(jī)已經(jīng)非常普及;它們現(xiàn)在控制著比較多的具有價(jià)值的東西(這使它們值得進(jìn)行攻擊)。過(guò)去,顧客十分愿意購(gòu)買不安全的軟件,所以根本沒(méi)人愿意出錢開(kāi)發(fā)安全的軟件。

電子世界現(xiàn)在是一個(gè)危險(xiǎn)程度更加高的地方。今天,我們要求幾乎所有的應(yīng)用程序都是安全的應(yīng)用程序。例如,實(shí)際上我們要求每個(gè) Web 應(yīng)用程序都是安全的應(yīng)用程序,因?yàn)椴豢尚诺挠脩艨赡芟蛩鼈儼l(fā)送數(shù)據(jù)。甚至那些顯示或編輯本地文件的應(yīng)用程序(如字處理器)都必須受到保護(hù),因?yàn)橛袝r(shí)用戶將顯示或編輯以電子郵件方式發(fā)送給他們的數(shù)據(jù)。

如果您在開(kāi)發(fā)軟件,那么您就是身處戰(zhàn)場(chǎng),需要知道如何保護(hù)您自己。遺憾的是,大多數(shù)軟件開(kāi)發(fā)人員從未知曉如何編寫(xiě)安全的應(yīng)用程序。

本專欄將幫助您了解如何編寫(xiě)安全的應(yīng)用程序。學(xué)校里很少會(huì)教這類信息,其它地方也不太會(huì)講授這一主題。如果您學(xué)習(xí)了本專欄,那么您將能夠保護(hù)您的程序,避免當(dāng)前所用的最常見(jiàn)的攻擊。盡管我們主要討論 Linux 操作系統(tǒng)(也稱為 GNU/Linux),但是幾乎所有的內(nèi)容都適用于任何類 UNIX 系統(tǒng),而且其中的許多內(nèi)容也適用于其它操作系統(tǒng)(象 Microsoft Windows)。

對(duì)于這第一篇文章,我將先介紹一些基礎(chǔ)知識(shí):安全性術(shù)語(yǔ)、改變您的理念、自由/開(kāi)放源碼軟件(Free-Libre/open source software,F(xiàn)LOSS)的影響以及確定安全性需求。

#p#術(shù)語(yǔ):這些詞表示什么意思?

每一領(lǐng)域都有其自己的術(shù)語(yǔ),而計(jì)算機(jī)安全性領(lǐng)域中的術(shù)語(yǔ)則有些雜亂無(wú)章,其中充斥著首字母縮寫(xiě)詞和易混淆的詞。以下幾個(gè)定義應(yīng)該有所幫助:

•攻擊者(attacker)(也稱為 非法闖入者)是這樣的人:他試圖使程序或計(jì)算機(jī)做某些事情,而這些事情是明確禁止做的,如為了獲得或更改私有數(shù)據(jù)而闖入不屬于他們的計(jì)算機(jī)。

•黑客(hacker)是計(jì)算機(jī)專家或計(jì)算機(jī)狂熱者。并非所有攻擊者都是黑客 - 有些攻擊者根本不了解計(jì)算機(jī)。同樣,并非所有黑客都是攻擊者 - 許多黑客編寫(xiě)保護(hù)您的程序!媒體公司只關(guān)注那些攻擊計(jì)算機(jī)系統(tǒng)的黑客,而往往忽視那些計(jì)算機(jī)的保衛(wèi)者,所以有些人就使用術(shù)語(yǔ)“黑客”表示只進(jìn)行攻擊的黑客。但是,如果您認(rèn)為所有的黑客都是攻擊者,那么您在理解許多安全性文章時(shí)會(huì)碰到很多麻煩,所以我將使用這里指出的定義。

•缺陷(flaw)是程序中的錯(cuò)誤,或是程序的安裝方法中的錯(cuò)誤。并不是所有的缺陷都與安全性有關(guān)。

•安全性漏洞(vulnerability)就是一個(gè)缺陷,它使程序有可能無(wú)法滿足其安全性需求。

•漏洞利用(exloit)是一個(gè)揭示或利用安全性漏洞的程序。

改變您的理念

在學(xué)習(xí)如何編寫(xiě)安全的軟件時(shí)遇到的最大挑戰(zhàn)是改變您對(duì)軟件開(kāi)發(fā)的觀點(diǎn)。以下幾點(diǎn)應(yīng)該會(huì)有所幫助:

•偏執(zhí)狂是一種優(yōu)點(diǎn)。在自己進(jìn)行調(diào)查研究之前不要相信任何事情。不要想當(dāng)然地以為您的輸入遵守您所依賴的規(guī)則;去檢驗(yàn)它。不要忽略來(lái)自庫(kù)的錯(cuò)誤報(bào)告;通常,在遇到意想不到的錯(cuò)誤時(shí),您需要終止正在進(jìn)行的處理。不要以為您的程序沒(méi)有錯(cuò)誤;限制您的程序能夠完成的事情,這樣錯(cuò)誤成為安全性缺陷的可能性就會(huì)比較少。

•一般的測(cè)試通常無(wú)法發(fā)現(xiàn)安全性缺陷。大多數(shù)測(cè)試方法都假定用戶設(shè)法使用程序來(lái)幫助他們完成一些工作。因此,測(cè)試假定用戶將以某種“隨機(jī)”或“有用”的方式工作,檢查程序在“一般”情況下或者在某些最大值下如何工作。與此相反,安全性缺陷通常只出現(xiàn)在使用極其古怪的值的情況時(shí),傳統(tǒng)的測(cè)試完全不會(huì)檢查這樣的值。有些開(kāi)發(fā)人員會(huì)編寫(xiě)非常糟糕的代碼,然后希望通過(guò)測(cè)試它來(lái)進(jìn)行糾正。這種方法根本不會(huì)產(chǎn)生安全的代碼,因?yàn)槟鸁o(wú)法創(chuàng)建足夠多的測(cè)試來(lái)涵蓋攻擊者能做到的所有稀奇古怪的事情。

•小玩意(象防火墻)和技術(shù)(象加密)是不夠的。

•從過(guò)去的失敗確定和了解漏洞。事實(shí)證明幾乎所有軟件的安全性漏洞都是由相對(duì)較小的一組常見(jiàn)錯(cuò)誤引起的。如果您了解了那些是什么錯(cuò)誤 - 以及如何避免這樣的錯(cuò)誤 - 您的軟件就會(huì)安全得多。事實(shí)上,本專欄將集中討論如何避免以前出現(xiàn)的常見(jiàn)錯(cuò)誤,這樣您就不會(huì)犯同樣的錯(cuò)誤。

#p#FLOSS 會(huì)使我們安全嗎?

自由/開(kāi)放源碼軟件程序是帶有某種許可證的程序,這樣的許可證允許用戶以任何目的自由地運(yùn)行程序,自由地研究和修改程序以及自由地重新分發(fā)原始程序副本或修改過(guò)的程序副本(而不必向以前的開(kāi)發(fā)人員支付版稅)。FLOSS 的同義詞包括開(kāi)放源碼軟件(OSS),大寫(xiě)時(shí)是“自由軟件(Free Software)”(FS)以及 OSS/FS。“自由軟件”和“開(kāi)放源碼軟件”可在本文中互換使用,但是推薦使用“FLOSS”,因?yàn)樗诉@兩個(gè)術(shù)語(yǔ)。典型的 FLOSS 程序都是由開(kāi)發(fā)人員社區(qū)開(kāi)發(fā)的,他們一起工作并評(píng)審彼此的工作。Linux 內(nèi)核是 FLOSS,Apache Web 服務(wù)器和許多其它程序也是 FLOSS;FLOSS 正逐漸在許多市場(chǎng)特殊領(lǐng)域流行起來(lái)。

人們可以評(píng)審 FLOSS 程序的源代碼,這樣會(huì)如何影響安全性存在著激烈辯論。由于受到大眾所有可能的詳細(xì)審查,所以 FLOSS 會(huì)更安全嗎?或者,F(xiàn)LOSS 是否會(huì)更不安全,因?yàn)楣粽攉@得了更多的信息 - 這會(huì)使得進(jìn)行對(duì)程序的攻擊更容易嗎?

這些問(wèn)題開(kāi)始有了答案,與象“FLOSS 總是比較安全的”這樣的簡(jiǎn)單聲明相比,這些答案更為細(xì)致且更復(fù)雜。確實(shí)有事實(shí)證明 FLOSS 能比具有專利權(quán)的軟件安全。例如,據(jù)報(bào)告 FLOSS OpenBSD 操作系統(tǒng)的安全性漏洞比 Microsoft Windows 少得多。但是有一個(gè)合理的“反訴”:由于 Windows 用戶比較多,所以對(duì) Windows 的攻擊就可能比較多,這意味著更有可能發(fā)現(xiàn) Windows 的安全性漏洞。這就是比較的全部?jī)?nèi)容嗎?很值得懷疑,不過(guò)這也顯示出作同等對(duì)比是多么困難。

一個(gè)更佳的示例是 Apache Web 服務(wù)器:它比 Microsoft 的具有專利權(quán)的 IIS Web 服務(wù)器流行得多,但是 Apache 的嚴(yán)重安全性漏洞卻比 IIS 少。

還有一點(diǎn)很清楚,攻擊者實(shí)際上并不需要源代碼。只要研究可獲得的所有 Microsoft Windows 漏洞利用就可以了!更重要的是,如果攻擊者需要源代碼,那么他們會(huì)使用反編譯器,來(lái)重新創(chuàng)建源代碼,這樣重新創(chuàng)建的源代碼對(duì)攻擊目的而言足夠了。

但是答案也并非就是“FLOSS 總是比較安全的”。畢竟,您可以將具有專利權(quán)的程序的許可證更改成 FLOSS,而不更改其代碼,而它不會(huì)突然就變得更安全。相反,有幾個(gè)因素看來(lái)是使 FLOSS 程序擁有良好的安全性所必不可少的:

•必須多人真正地評(píng)審代碼。有多種因素會(huì)減少進(jìn)行評(píng)審的可能性,如用于特殊領(lǐng)域或很少用到的產(chǎn)品(可能的評(píng)審者很少)、開(kāi)發(fā)人員很少、使用罕見(jiàn)的計(jì)算機(jī)語(yǔ)言或?qū)嶋H上不是 FLOSS(如“共享源碼”許可證)。如果每次代碼更改都由許多開(kāi)發(fā)人員進(jìn)行檢查,這通常有助于安全性。

•至少某些開(kāi)發(fā)和評(píng)審代碼的人必須知道如何編寫(xiě)安全的程序。一個(gè)人可以幫助培訓(xùn)其他人,但是您必須有一個(gè)起點(diǎn)。

•一旦發(fā)現(xiàn)安全性漏洞,需要快速地開(kāi)展修補(bǔ)工作并將修補(bǔ)成果進(jìn)行分發(fā)。

簡(jiǎn)而言之,程序是否安全最重要的因素是 - 不管它是 FLOSS 還是具有專利權(quán)的 - 其開(kāi)發(fā)人員是否知道如何編寫(xiě)安全的程序。

如果您需要安全的程序,那么使用 FLOSS 程序就相當(dāng)合理 - 但您需要以某種方式評(píng)估它以確定它對(duì)于您的目的是否足夠安全。

確定您的安全性需求

在您可以確定程序是否安全之前,需要先確切地確定其安全性需求是什么。事實(shí)上,有關(guān)安全性的實(shí)際問(wèn)題之一是安全性需求會(huì)根據(jù)不同的程序和不同的環(huán)境而迥然不同。文檔查看器或編輯器(如字處理器)可能需要確保查看數(shù)據(jù)不會(huì)使程序運(yùn)行任意命令。購(gòu)物車需要確保顧客不能自己定價(jià),而且顧客不能查看有關(guān)其他顧客的信息等等。

事實(shí)上您可以使用一個(gè)國(guó)際標(biāo)準(zhǔn)來(lái)正式確定安全性需求并確定它們是否滿足要求。這個(gè)國(guó)際標(biāo)準(zhǔn)的正式標(biāo)識(shí)符是 ISO/IEC 15408:1999,但人們都稱之為“通用標(biāo)準(zhǔn)(Common Criteria,CC)”。

有些合同特別要求您使用 CC 的所有細(xì)節(jié),這樣的話,您需要知道的就要比本文所涉及的多得多。但對(duì)于許多情況,幫助您確定安全性需求所需的全部就是一個(gè)非正式的簡(jiǎn)化方法。所以,我將根據(jù) CC,來(lái)描述一個(gè)用于確定安全性需求的經(jīng)過(guò)簡(jiǎn)化的方法:

•確定您的安全性環(huán)境。
•確定您的安全性目標(biāo)。
•確定您的安全性需求。

即使您在非正式地這樣做,也請(qǐng)寫(xiě)下您的結(jié)果 - 它們以后也可以向您和您的用戶提供幫助。

安全性環(huán)境

程序?qū)嶋H上不會(huì)在真空中工作 - 在某個(gè)環(huán)境中是安全的程序可能在另一個(gè)環(huán)境中就不安全了。因此,您必須確定您的程序要在什么樣的環(huán)境(或多種環(huán)境)下工作。特別地,請(qǐng)考慮:

•威脅。您的威脅有哪些?

◦誰(shuí)會(huì)進(jìn)行攻擊?可能的攻擊者也許包括無(wú)知的用戶、計(jì)算機(jī)業(yè)務(wù)愛(ài)好者、罪犯、對(duì)公司不滿的雇員、其他內(nèi)部人員、沒(méi)有職業(yè)道德的競(jìng)爭(zhēng)對(duì)手、恐怖分子的組織或甚至是外國(guó)政府。盡管攻擊者的危險(xiǎn)程度會(huì)有不同,但是每個(gè)人都可能成為攻擊者的目標(biāo)。設(shè)法確定您所信任的人;明確您不該信任其他任何人。確定誰(shuí)是不可信的人是一個(gè)好主意,因?yàn)檫@會(huì)幫助您確定真正的問(wèn)題是什么。商業(yè)組織不能忽略恐怖分子或外國(guó)政府實(shí)施的電子攻擊 - 國(guó)家軍隊(duì)根本不會(huì)花費(fèi)他們的資源來(lái)設(shè)法通過(guò)電子方式保護(hù)您。在電子世界中,我們所有的人都要靠我們自己,而且我們每個(gè)人都必須保護(hù)我們自己。

◦他們?nèi)绾芜M(jìn)行攻擊?您是否擔(dān)心會(huì)有特殊類型的攻擊,如攻擊者假扮合法用戶?有沒(méi)有那些在類似的程序中已經(jīng)存在的安全性漏洞呢?

◦您正設(shè)法保護(hù)的是什么資產(chǎn)?所有信息都是不相同的 - 您正設(shè)法保護(hù)的是哪幾種不同的信息,以及如何保護(hù)(防止被讀取?防止被更改?)?您擔(dān)心被竊取、破壞或被狡猾地修改嗎?根據(jù)您正設(shè)法保護(hù)的資產(chǎn)以及攻擊者可能會(huì)如何處理這些資產(chǎn)來(lái)考慮安全性。

•假設(shè)。您需要做怎樣的假設(shè)?例如,您的系統(tǒng)是否受到保護(hù)而免受物理威脅?您的支持環(huán)境(平臺(tái)和網(wǎng)絡(luò))是什么 - 它們安全嗎?

•組織安全性策略。有沒(méi)有希望程序遵守或?qū)崿F(xiàn)的法規(guī)或法律呢?例如,美國(guó)或歐洲的醫(yī)療系統(tǒng)必須(在法律上)使某些醫(yī)療數(shù)據(jù)保密。

安全性目標(biāo)

一旦您知道了身處什么環(huán)境;就可以確定您的安全性目標(biāo),它們基本上是高級(jí)需求。典型的安全性目標(biāo)涉及多個(gè)方面,比如:

•機(jī)密性:系統(tǒng)將防止在未授權(quán)情況下泄露信息(“不能讀”)。

•完整性:系統(tǒng)將防止在未授權(quán)情況下更改信息(“不能更改”)。

•可用性:系統(tǒng)將持續(xù)工作,即使在受攻擊的時(shí)候也是如此(“工作的持續(xù)性”)。能夠在所有可能的攻擊下繼續(xù)工作的系統(tǒng)是不存在的,但是系統(tǒng)可以抵御許多攻擊或在受攻擊后迅速恢復(fù)至可用狀態(tài)。

•認(rèn)證:系統(tǒng)將確保用戶是可信的。

•審計(jì):系統(tǒng)將記錄重要事件,以允許稍后跟蹤所發(fā)生的事情(例如,捕獲攻擊者或?qū)粽咛崞鹪V訟)。

通常,在您確定了安全性目標(biāo)時(shí),您的程序單靠自己還不能完成某些事情。例如,可能您正在運(yùn)行的操作系統(tǒng)需要進(jìn)行加強(qiáng),或者可能您要依靠一些外部認(rèn)證系統(tǒng)。這樣的話,您就需要確定這些環(huán)境需求并確保您告訴了用戶如何使這些需求成為現(xiàn)實(shí)。然后您可以將精力集中在您程序的安全性需求上。

功能性需求和保證需求

一旦知道了程序的安全性目標(biāo),就可以通過(guò)更詳細(xì)地填充其內(nèi)容來(lái)確定安全性需求。CC 確定了兩類主要的安全性需求:保證需求和功能性需求。事實(shí)上,CC 的大多數(shù)內(nèi)容是一個(gè)可能的保證需求和功能性需求的列表,您可以針對(duì)給定的程序從中進(jìn)行選取。

保證需求 是用來(lái)確保程序完成它該做的事情 - 而不做別的事 - 的過(guò)程。這可能包括評(píng)審程序文檔以查看其前后的一致性、測(cè)試安全性機(jī)制以確保它們按計(jì)劃工作,或者創(chuàng)建并運(yùn)行滲透測(cè)試(為設(shè)法攻破程序而專門設(shè)計(jì)的測(cè)試)。CC 預(yù)先創(chuàng)建了幾組保證需求,但是如果其它保證措施有助于您滿足要求,那么也可以自由使用這些措施。例如,您可以使用工具在您的源代碼中搜索可能的安全性問(wèn)題(這些工具稱為“源代碼掃描工具”) - 即使它不是 CC 中的特定保證需求。

功能性需求 是程序?yàn)閷?shí)現(xiàn)安全性目標(biāo)所執(zhí)行的功能。也許程序會(huì)檢查密碼以認(rèn)證用戶,或者對(duì)數(shù)據(jù)加密以將它隱藏等等。通常,只有“授權(quán)”用戶可以完成某些操作 - 所以請(qǐng)考慮程序應(yīng)該如何確定誰(shuí)獲得了授權(quán)。

下一步是什么?

那么,一旦知道了程序必須做的事情,這就夠了嗎?不。只要大致閱讀已知的安全性漏洞列表(如 Bugtraq、CERT 或 CVE)就可以知道,當(dāng)今的大多數(shù)安全性漏洞都是由相對(duì)小的一組常見(jiàn)實(shí)現(xiàn)錯(cuò)誤引起的。這些錯(cuò)誤沒(méi)有單一的標(biāo)準(zhǔn)術(shù)語(yǔ),但是還是有常見(jiàn)的短語(yǔ)來(lái)描述它們,如“不能驗(yàn)證輸入(failing to validate input)”、“緩沖區(qū)溢出(buffer overflow)”以及“競(jìng)態(tài)狀態(tài)(race condition)”等等。遺憾的是,大多數(shù)開(kāi)發(fā)人員對(duì)于這些常見(jiàn)錯(cuò)誤是什么沒(méi)有任何概念,而且他們重復(fù)著別人以前已經(jīng)犯過(guò)的錯(cuò)誤。

本專欄未來(lái)的文章將深入討論這些常見(jiàn)錯(cuò)誤是什么,而且更重要的是,如何避免犯這樣的錯(cuò)誤。在許多情況下,避免這樣錯(cuò)誤的方法是細(xì)致加簡(jiǎn)單 - 但是如果您不知道如何避免錯(cuò)誤,那么就有可能重犯這樣的錯(cuò)誤。

在本專欄中,我一般不會(huì)設(shè)法將多種不同的應(yīng)用程序(如“Web 應(yīng)用程序”、“基礎(chǔ)結(jié)構(gòu)組件”、“本地應(yīng)用程序”或“setuid 應(yīng)用程序”)分門別類。原因是什么呢?今天的應(yīng)用程序正不斷相互聯(lián)系,它們由許多不同的部分組成。其結(jié)果是,您的“一個(gè)”應(yīng)用程序可能有幾個(gè)不同的部分,每個(gè)部分都屬于不同的一類,這是十分可能的!但是,我認(rèn)為更好的做法是,了解如何在任何情況下都能開(kāi)發(fā)安全的應(yīng)用程序,并隨后注意何時(shí)應(yīng)用特定的指導(dǎo)原則。

接下來(lái)的一篇專欄文章將由討論如何驗(yàn)證輸入開(kāi)始。這比聽(tīng)上去還要棘手。例如,我們將看到為什么尋找不正確的輸入是一個(gè)錯(cuò)誤,而且攻擊者如何能經(jīng)常使用非法的負(fù)數(shù)(而不使用“-”字符)就可以潛入。以后的主題將包括避免緩沖區(qū)溢出、使特權(quán)最小化以及避免競(jìng)態(tài)狀態(tài)。要通過(guò)好幾篇文章才能涵蓋常見(jiàn)的錯(cuò)誤,但通過(guò)閱讀本專欄,您將能夠避免那些造成目前幾乎所有的軟件安全性漏洞的錯(cuò)誤。

【編輯推薦】

  1. Linux中利用系統(tǒng)庫(kù)文件來(lái)降低工作量
  2. 檢測(cè)在Linux系統(tǒng)下U盤是否已連接的方法
  3. Linux EXT3下刪除MySQL數(shù)據(jù)庫(kù)的數(shù)據(jù)恢復(fù)
責(zé)任編輯:趙寧寧 來(lái)源: 賽迪網(wǎng)
相關(guān)推薦

2014-02-19 15:38:42

2022-06-22 09:00:00

安全編程語(yǔ)言工具

2021-07-20 09:44:34

云原生應(yīng)用程序安全云安全

2013-11-19 15:35:01

2013-10-31 10:44:54

IDE工具

2013-11-18 09:03:22

2011-02-13 14:36:35

2013-02-18 16:12:55

2012-05-29 10:04:08

2009-02-27 17:00:25

2018-10-18 17:37:55

2018-09-30 15:58:34

2012-03-20 10:28:43

2021-05-12 14:57:13

網(wǎng)絡(luò)安全密碼代碼

2023-10-27 12:11:33

2021-04-25 11:16:06

安全音頻社交媒體應(yīng)用程序

2016-03-07 13:16:15

2022-02-21 14:41:21

APIWeb安全

2017-11-23 15:09:16

2023-03-02 09:29:21

Evilgrade模塊化框架
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)