为什么人们继续使用允许溢出的数据结构



缓冲区溢出似乎是造成安全漏洞的最大原因之一。我很少用C/C++编程(只针对某些课程),所以我可能遗漏了一些东西,但我不明白为什么人们继续使用允许溢出的数据结构。为什么所有数据结构在满时都不抛出异常?看起来这个简单的解决方案将大大增强软件的安全性。

  • 无知

很大一部分程序员(在我对世界的负面看法中)要么根本不了解安全问题,要么不了解他们使用的哪些数据结构是易受攻击的。90年代,很多程序员都在使用gets(),甚至每一本C书都在鼓励使用它。现在,使用它会被称为疯狂。但并不是每个人都收到了备忘录!

  • 懒惰

子类别包括"没有人会费心攻击我的应用程序"、"无论如何,它只是一个原型"one_answers"下周到期,我稍后会修复它"

  • 困难(感知或其他)

实际上,编写可移植、正确和安全的C代码非常困难。几乎任何不是用真正敏锐的眼光编写的非平凡项目都可能存在漏洞。在像C这样的非托管语言中,许多错误都有可能成为安全问题。

也很难"通过设计"使API既可用又安全。

对于尸体上的最后一把刀来说,所有这些问题都会影响到整个项目的所有开发人员。这包括您使用的任何库,它们使用的所有库,一直到您使用的操作系统内核。任何一个程序员如果一路上陷入任何安全陷阱,都会对整个事情造成很大的损害。

托管语言会让很多这样的问题变得更好——至少你不能在任意内存上乱写,但不同类别的安全问题仍然存在。

最新更新