我是一名IT专业的学生,我现在在大学三年级。到目前为止,我们已经学习了很多与计算机相关的学科(编程、算法、计算机体系结构、数学等)。

我很确定没有人能学会所有关于安全的知识,但肯定有一个“最低限度”的知识每个程序员或IT学生都应该知道,我的问题是这个最低限度的知识是什么?

你能建议一些电子书或课程或任何可以帮助我们开始这条路的东西吗?


当前回答

为什么是重要的。 这都是关于权衡。 密码学在很大程度上分散了人们对安全性的注意力。

其他回答

程序员的安全规则第一条:不要自己动手

除非您自己是安全专家和/或密码学家,否则请始终使用设计良好、经过良好测试且成熟的安全平台、框架或库来为您工作。专家和黑客等人花了数年时间思考、修补、更新和检查这些问题。你想要获得这些优势,而不是试图重新发明轮子而忽视它们。

现在,这并不是说您不需要学习任何关于安全性的知识。当然,您需要了解足够多的知识来理解您在做什么,并确保正确地使用这些工具。然而,如果你发现自己要开始编写自己的加密算法、认证系统、输入杀毒器等,停下来,后退一步,记住规则#1。

只是想把这个分享给网页开发者:

security-guide-for-developershttps: / / github.com/FallibleInc/security-guide-for-developers

如果你想要你的应用程序是安全的,请记住以下原则:

Never trust any input! Validate input from all untrusted sources - use whitelists not blacklists Plan for security from the start - it's not something you can bolt on at the end Keep it simple - complexity increases the likelihood of security holes Keep your attack surface to a minimum Make sure you fail securely Use defence in depth Adhere to the principle of least privilege Use threat modelling Compartmentalize - so your system is not all or nothing Hiding secrets is hard - and secrets hidden in code won't stay secret for long Don't write your own crypto Using crypto doesn't mean you're secure (attackers will look for a weaker link) Be aware of buffer overflows and how to protect against them

网上有一些关于提高应用程序安全性的优秀书籍和文章:

编写安全代码第二版——我认为每个程序员都应该读这篇文章 构建安全软件:如何以正确的方式避免安全问题 安全编程指南 利用软件 安全工程——一本极好的读物 Linux和Unix安全编程HOWTO

对开发人员进行应用程序安全最佳实践方面的培训

Codebashing(支付)

安全创新(支付)

安全罗盘(付费)

OWASP WebGoat(免费)

当你创建任何企业或任何自己的软件时,你应该像黑客一样思考。正如我们所知,黑客也不是所有事情的专家,但当他们发现任何漏洞时,他们开始通过收集所有事情的信息来挖掘它,最终攻击我们的软件。所以为了防止这种攻击,我们应该遵循一些众所周知的规则,比如:

总是尝试破译你的密码(使用小抄和谷歌之类的东西来获取更多信息)。 更新编程域中的安全漏洞。 如上所述,永远不要相信任何类型的用户或自动输入。 使用开源应用程序(它们的大多数安全缺陷已经被知道并解决了)。

你可在以下连结找到更多保安资源:

owasp安全 CERT安全 无安全 netcraft 太空安全 openwall PHP交会 Thehackernews(不断更新自己)

有关应用程序供应商安全流程的更多信息谷歌。

关于安全的一般信息,我强烈推荐阅读Bruce Schneier。他有一个网站,他的密码通讯,几本书,还做了很多采访。

我也会熟悉社会工程(和Kevin Mitnick)。

对于一本关于安全在现实世界中如何发挥作用的好书(而且相当有趣),我会推荐这本优秀的(尽管有点过时)克里夫·斯托尔的《布谷鸟的蛋》。