- C和C++安全編碼(原書第2版)
- (美)Robert C.Seacord
- 984字
- 2020-10-30 17:56:33
1.2 安全概念
計(jì)算機(jī)安全(computer security)指的是阻止攻擊者通過未授權(quán)訪問或未授權(quán)使用計(jì)算機(jī)和網(wǎng)絡(luò)達(dá)到目的[Howard 1997]。安全包含開發(fā)和配置兩方面的元素。開發(fā)安全要求具有安全的設(shè)計(jì)和無瑕疵的實(shí)現(xiàn);配置安全則要求系統(tǒng)和網(wǎng)絡(luò)被安全地予以部署以免遭攻擊。兩種安全不分主次,屬于雞和蛋的問題,不過有一點(diǎn)是確定無疑的:二者缺一不可。原因在于,就算能夠開發(fā)出極其安全的軟件,最后仍然需要對其進(jìn)行安全的部署和配置。如果部署階段的工作沒有做好,即便設(shè)計(jì)為最安全的代碼也會給攻擊者以可乘之機(jī)。這種情形與最終用戶要求軟件易使用、易配置、易維護(hù)同時價(jià)格低廉的目標(biāo)是矛盾的。
圖1.4展示了這些安全概念之間的關(guān)系。
程序是由軟件組件(software component)和定制開發(fā)的源代碼(source code)構(gòu)建而成的。軟件組件是組成大型軟件程序的元素[Wallnau 2002]。軟件組件包括各種共享庫,例如,動態(tài)連接庫(DLL)和ActiveX控件、EJB(Enterprise JavaBeans)以及其他一些組合單元。軟件組件在運(yùn)行時可靜態(tài)或動態(tài)鏈接到程序中。然而,軟件組件并不是由最終用戶直接執(zhí)行的,它只不過是一個大程序中的一個組成部分而已。因此,軟件組件是不可以有漏洞的,因?yàn)樗豢赡苊撾x程序的上下文而獨(dú)立運(yùn)行。源代碼指的是程序指令集的原始形式。“源”這個詞將代碼與它可能具有的其他任何形式(例如,目標(biāo)代碼和可執(zhí)行代碼)區(qū)分開。雖然有時也需要對代碼的“非源”形式(例如,當(dāng)集成某些不包含源代碼的第三方組件時)進(jìn)行分析,但我們在這里只關(guān)注“源”形式的代碼,因?yàn)楸緯哪繕?biāo)讀者主要是軟件開發(fā)人員(他們通常都可以訪問源代碼)。
圖1.4 安全概念、角色和關(guān)系
圖1.4還展示了人和物之間的關(guān)系。這些角色在不同的組織中有所不同,在本書中使用如下定義。
·程序員(programmer):對源代碼的正確性、性能和安全等特性負(fù)責(zé)。
·系統(tǒng)集成人員(system integrator):負(fù)責(zé)集成新的和現(xiàn)有的軟件組件,以創(chuàng)建滿足特定顧客要求的軟件或系統(tǒng)。
·系統(tǒng)管理員(system administrator):負(fù)責(zé)管理系統(tǒng)并維護(hù)其安全性,包括安裝和卸載軟件、給系統(tǒng)打補(bǔ)丁以及管理系統(tǒng)權(quán)限等。
·網(wǎng)絡(luò)管理員(network administrator):負(fù)責(zé)管理網(wǎng)絡(luò)安全事務(wù)。
·安全分析員(security analyst):關(guān)注安全缺陷并提供識別方法。
·漏洞分析員(vulnerability analyst):負(fù)責(zé)分析現(xiàn)有的和已部署的程序中的漏洞。
·安全研究員(security researcher):負(fù)責(zé)開發(fā)緩解措施和解決方案,可能從業(yè)于業(yè)界、學(xué)術(shù)界或政府。
·攻擊者(attacker):利用軟件漏洞達(dá)到其不可告人目的的壞家伙。他們的動機(jī)視威脅而定。攻擊者通常也稱為敵手、惡意用戶、黑客或其他別名。
- Designing Machine Learning Systems with Python
- 微信公眾平臺與小程序開發(fā):從零搭建整套系統(tǒng)
- Visual C++串口通信開發(fā)入門與編程實(shí)踐
- Learn Type:Driven Development
- PLC編程及應(yīng)用實(shí)戰(zhàn)
- RabbitMQ Cookbook
- ExtJS高級程序設(shè)計(jì)
- C#應(yīng)用程序設(shè)計(jì)教程
- 動手打造深度學(xué)習(xí)框架
- App Inventor 2 Essentials
- Penetration Testing with the Bash shell
- 分布式架構(gòu)原理與實(shí)踐
- HTML5移動前端開發(fā)基礎(chǔ)與實(shí)戰(zhàn)(微課版)
- 分布式數(shù)據(jù)庫HBase案例教程
- Test-Driven iOS Development with Swift