我是一名IT学生,现在大学三年级。到目前为止,我们一直在研究与计算机相关的许多主题(编程,算法,计算机体系结构,数学等)。
我非常确定没有人能够了解有关安全的所有事情,但确信每个程序员或IT学生都应该了解它的“最低限度”知识,而我的问题是这个最低限度的知识是什么?
你能推荐一些电子书或课程,还是有什么可以帮助你从这条道路开始?
答案 0 :(得分:544)
如果您希望应用程序安全,请记住这些原则:
有一些关于使您的应用程序安全的优秀书籍和文章:
培训您的开发人员应用程序安全性最佳实践
Codebashing(付费)
Security Compass(付费)
OWASP WebGoat(免费)
答案 1 :(得分:102)
程序员的安全规则#1:不要自己动手
除非您自己是安全专家和/或密码学家,否则总是使用经过精心设计,经过良好测试的成熟安全平台,框架或库来为您完成工作。这些事情花了数年时间被专家和黑客一直考虑,修补,更新和检查。你想获得这些优势,而不是通过重新发明轮子来解雇它们。
现在,这并不是说您不需要了解任何有关安全性的知识。你当然需要足够了解你正在做什么,并确保你正确使用这些工具。但是,如果您发现自己即将开始编写自己的加密算法,身份验证系统,输入清理程序等,请停止,退后一步,并记住规则#1。
答案 2 :(得分:69)
每个程序员都应该知道如何编写漏洞利用代码。
在不知道系统如何被利用的情况下,您会意外地阻止漏洞。除非您知道如何测试补丁,否则了解如何修补代码绝对没有意义。安全不仅仅是一堆思想实验,你必须科学并测试你的实验。
答案 3 :(得分:41)
安全是一个过程,而不是产品。
许多人似乎忘记了这个显而易见的事实。
答案 4 :(得分:23)
我建议审核CWE/SANS TOP 25 Most Dangerous Programming Errors。它在2010年更新,承诺将来定期更新。 2009修订版也可用。
来自http://cwe.mitre.org/top25/index.html
2010年CWE / SANS排名前25位最危险的编程错误列出了可能导致严重软件漏洞的最广泛和最关键的编程错误。它们通常很容易找到,并且易于利用。它们很危险,因为它们经常允许攻击者完全接管软件,窃取数据或阻止软件工作。
排名前25位的列表是一种教育和意识工具,通过识别和避免在软件发布之前发生的常见错误,帮助程序员防止困扰软件行业的各种漏洞。软件客户可以使用相同的列表来帮助他们要求更安全的软件。软件安全方面的研究人员可以使用前25名专注于所有已知安全漏洞的一个狭窄但重要的子集。最后,软件经理和首席信息官可以使用前25名列表作为他们保护软件安全工作的衡量标准。
答案 5 :(得分:13)
良好的入门课程可能是Computer Networks and Security中的麻省理工学院课程。我建议的一件事是不要忘记隐私。从某种意义上说,隐私确实是安全的基础,而且通常不会涉及安全技术课程。您可以在Ethics and the Law上找到有关隐私的一些材料,因为它与互联网有关。
答案 6 :(得分:10)
Mozilla的网络安全团队组建了一个great guide,我们在开发我们的网站和服务时遵守这一要求。
答案 7 :(得分:8)
框架和API中安全默认值的重要性:
答案 8 :(得分:5)
你应该知道三个A的。身份验证,授权,审计。经典错误是对用户进行身份验证,而不检查用户是否有权执行某些操作,因此用户可能会查看其他用户的私人照片,这是Diaspora所犯的错误。许多人忘记了审计,你需要在一个安全的系统中,能够分辨出谁做了什么,何时做了什么。
答案 9 :(得分:4)
答案 10 :(得分:4)
我会添加以下内容:
了解不同的攻击媒介的工作原理:
您可以轻松谷歌所有这一切。这将为您奠定良好的基础。 如果您想查看Web应用程序漏洞,可以使用名为google gruyere的项目向您展示如何利用有效的Web应用程序。
答案 11 :(得分:4)
当你构建任何企业或任何自己的软件时,你应该像黑客一样思考。我们知道黑客也不是所有事情的专家,但是当他们发现任何漏洞时,他们会开始通过收集挖掘它关于所有事情的信息,最后攻击我们的软件。为了防止这种攻击,我们应该遵循一些众所周知的规则,如:
您可以在以下链接中找到更多安全资源:
了解有关您的应用程序供应商安全流程的更多信息。
答案 12 :(得分:3)
答案 13 :(得分:3)
另请务必查看OWASP Top 10 List以查看所有主要攻击媒介/漏洞的分类。
这些内容令人着迷。学习像攻击者一样思考会在你编写自己的代码时训练你思考什么。
答案 14 :(得分:3)
有关安全性的一般信息,我强烈建议您阅读Bruce Schneier。他有一个网站,他的crypto-gram newsletter,几个books,并且做了很多interviews。
我也熟悉社会工程(和Kevin Mitnick)。
关于安全如何在现实世界中发挥作用的好书(并且非常有趣),我会推荐Cliff Stoll的优秀(虽然有点过时)'The Cuckoo's Egg'。
答案 15 :(得分:2)
加盐并哈希用户的密码。切勿将它们以明文形式保存在数据库中。
答案 16 :(得分:0)
只是想为网络开发者分享这个:
安全引导换开发
https://github.com/FallibleInc/security-guide-for-developers