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

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

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


当前回答

安全是一个过程,而不是一个产品。

许多人似乎忘记了这个显而易见的事实。

其他回答

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

一个好的入门课程可能是麻省理工学院的计算机网络与安全课程。我建议的一件事是不要忘记隐私。从某种意义上说,隐私确实是安全的基础,在有关安全的技术课程中并不经常涉及。你可能会在这门与互联网相关的道德与法律课程中找到一些关于隐私的材料。

对用户的密码加盐和散列。永远不要将它们以明文形式保存在数据库中。

我愿补充以下几点:

数字签名和数字证书是如何工作的 沙盒是什么

了解不同的攻击载体是如何工作的:

本机代码的缓冲区溢出/下溢/等 社会工程师 DNS欺骗 中间的人 CSRF/XSS等 SQL注入 加密攻击(例如:利用弱加密算法,如DES) 程序/框架错误(例如:github最新的安全漏洞)

你可以很容易地谷歌所有这些。这会给你一个很好的基础。 如果你想了解web应用程序的漏洞,有一个名为谷歌gruyere的项目可以向你展示如何利用一个正在运行的web应用程序。

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

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

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