請注意,涉及一些循環推理:安全性問題通常與C和C ++關聯。但是,其中有多少是由於這些語言的固有弱點,又有多少是由於這些語言只是大多數計算機基礎結構的書面語言?
C旨在“比彙編程序高一級”。除了您自己實現的功能之外,沒有其他限制可用於擠出系統的最後一個時鐘週期。
C ++確實提供了對C的各種改進,與安全性最相關的是其容器類(例如 <vector> 和 <string>
),並且自C ++ 11起,智能指針使您無需手動處理內存即可處理數據。但是,由於它是C的進化而不是全新的語言,因此它 仍然提供C的手動內存管理機制,因此如果您堅持使用C
那為什麼為什麼仍用這些語言編寫SSL,綁定或OS內核之類的東西呢?
因為這些語言可以直接修改內存,這使得它們特別適合某種類型的高性能,低級應用程序(例如加密,DNS表查找,硬件驅動程序...或Java VM) ;-))。
因此,如果違反了與安全性相關的軟件,則用C或C ++編寫的軟件的機會很高,這僅僅是因為大多數與安全性相關的軟件 是用C或C ++編寫的,通常出於歷史和/或性能方面的原因。如果是用C / C ++編寫的,則主要的攻擊媒介是緩衝區溢出。
是不同的語言,這將是不同的攻擊vecto r,但我確信也會存在安全漏洞。
開發C / C ++軟件比開發Java軟件更容易。利用Windows系統比利用Linux系統更容易。利用前者無處不在,眾所周知(例如,眾所周知的攻擊媒介,如何查找和利用它們),以及許多人正在尋找獎勵/努力比率高的漏洞。
這並不意味著後者本身就很安全(saf er ,也許,但不是 safe )。這意味著-作為較難獲得較低收益的目標-壞男孩還沒有浪費太多時間。