我是一名IT专业的学生,我现在在大学三年级。到目前为止,我们已经学习了很多与计算机相关的学科(编程、算法、计算机体系结构、数学等)。
我很确定没有人能学会所有关于安全的知识,但肯定有一个“最低限度”的知识每个程序员或IT学生都应该知道,我的问题是这个最低限度的知识是什么?
你能建议一些电子书或课程或任何可以帮助我们开始这条路的东西吗?
我是一名IT专业的学生,我现在在大学三年级。到目前为止,我们已经学习了很多与计算机相关的学科(编程、算法、计算机体系结构、数学等)。
我很确定没有人能学会所有关于安全的知识,但肯定有一个“最低限度”的知识每个程序员或IT学生都应该知道,我的问题是这个最低限度的知识是什么?
你能建议一些电子书或课程或任何可以帮助我们开始这条路的东西吗?
当前回答
记住,你(程序员)必须确保所有部分的安全,但攻击者只需要成功地找到你盔甲中的一个漏洞。 安全就是“未知的未知”的一个例子。有时你不知道可能的安全漏洞是什么(直到事后)。 漏洞和安全漏洞之间的区别取决于攻击者的智力。
其他回答
你应该知道三个A。认证、授权、审计。典型的错误是验证用户身份,而不检查用户是否被授权执行某些操作,因此用户可能会查看其他用户的私人照片,Diaspora所犯的错误。很多人忘记了审计,在一个安全的系统中,你需要能够知道谁在什么时候做了什么。
安全是一个过程,而不是一个产品。
许多人似乎忘记了这个显而易见的事实。
关于安全的一般信息,我强烈推荐阅读Bruce Schneier。他有一个网站,他的密码通讯,几本书,还做了很多采访。
我也会熟悉社会工程(和Kevin Mitnick)。
对于一本关于安全在现实世界中如何发挥作用的好书(而且相当有趣),我会推荐这本优秀的(尽管有点过时)克里夫·斯托尔的《布谷鸟的蛋》。
对用户的密码加盐和散列。永远不要将它们以明文形式保存在数据库中。
框架和api中安全默认值的重要性:
Lots of early web frameworks didn't escape html by default in templates and had XSS problems because of this Lots of early web frameworks made it easier to concatenate SQL than to create parameterized queries leading to lots of SQL injection bugs. Some versions of Erlang (R13B, maybe others) don't verify ssl peer certificates by default and there are probably lots of erlang code that is susceptible to SSL MITM attacks Java's XSLT transformer by default allows execution of arbitrary java code. There has been many serious security bugs created by this. Java's XML parsing APIs by default allow the parsed document to read arbitrary files on the filesystem. More fun :)