很多程序员总是写不安全的代码,大致有以下原因:
1. 在很多学校没有计算机安全的可能,即使有计算机安全课程(原文发表时间比较久远),他们通常根本不讨论怎么写安全的代码,大部分这些安全课程都是讨论常见的加密和协议,这些确实也很重要,但是他们通常不讨论真实环境中的问题,例如缓冲区溢出,字符串格式化,输入校验,我相信这是很重要的问题之一,即使这些大学生不太可能学会怎么写安全的程序,我们仍然期望他们写出安全的程序。
2. 编程书籍或课程没有教安全编程技术,事实上,知道现在根本都没有关于编程安全的书籍。
3. 没人使用常见的验证方法。
4. C是一门不安全的语言,而且标准C库字符串函数不安全,这尤其重要,因为C语言使用很广泛。
5. 程序没有考虑到各种用户的情况。
6.程序员都是人,人都是懒惰的,因此,程序员经常使用“方便”的方式代替取安全的方式,一旦可以使用,他们就再也不修复他们(BUG)。
7.大部分程序员都很平庸不够优秀。
8.大部分程序员不是安全人员,他们通常不会像攻击者一样思考。
9.大部分计算机安全模块都是糟糕的。
10.有大量不能运行的遗留软件,修复这些软件非常困难。
11.消费者不关心安全。(已过时)
12.安全带来额外的开发时间。
13.安全带来额外的测试。
原文: