缓冲区溢出似乎是导致安全漏洞的最大原因之一。我很少用C / C ++编程(仅用于某些课程),所以我可能会遗漏一些东西,但我不明白为什么人们继续使用允许溢出的数据结构。为什么所有数据结构都不会在满时抛出异常?似乎这个简单的解决方案将大大增强软件安全性。
答案 0 :(得分:2)
很大一部分程序员(在我对这个世界的不公平负面看法中)要么根本不了解安全问题,要么不了解他们使用哪些数据结构是脆弱的。大量的程序员经历了90年代,每个人都使用gets()
甚至每本C书都鼓励它。现在,你被称为疯狂使用它。但不是每个人都收到了备忘录!
子类别包括“没人会打扰攻击我的应用程序”,“它只是一个原型”,“它将在下周到期,我将在以后修复”
编写可移植,正确且安全的C代码实际上非常困难。几乎所有不用真正敏锐眼睛编写的重要项目如果不是彻头彻尾的漏洞,可能会有错误。在像C这样的非托管语言中,许多错误都有可能成为安全问题。
通过“设计”制作既可用又安全的API也很困难。
对于尸体中的最后一把刀,所有这些问题都会影响整个项目的所有开发人员。这包括您使用的任何库,他们使用的任何库,一直到您使用的操作系统内核。任何陷入任何安全陷阱的程序员都会在整个过程中妥协。
使用托管语言,很多这些问题变得更好 - 至少你不能乱写任意内存,但仍存在不同类别的安全问题。