security - 每个程序员都应该了解哪些安全知识?

标签 security

我是一名IT学生,现在是大学三年级。到目前为止,我们一直在研究许多与计算机相关的学科(编程、算法、计算机体系结构、数学等)。

我非常确定没有人能够学习有关安全的所有知识,但可以肯定每个程序员或 IT 学生都应该了解“最低”知识,我的问题是这个最低知识是什么?

您能推荐一些电子书或类(class)或任何可以帮助您开始这条道路的东西吗?

最佳答案

如果您希望应用程序安全,请记住以下原则:

  • 永远不要相信任何输入!
  • Validate input来自所有不受信任的来源 - 使用白名单而不是黑名单
  • 从一开始就做好安全计划 - 这不是你可以在最后才强加的东西
  • 保持简单 - 复杂性会增加出现安全漏洞的可能性
  • 保留您的attack surface最小化
  • 请确保 fail securely
  • 使用defence in depth
  • 坚持least privilege原则
  • 使用threat modelling
  • Compartmentalize - 所以你的系统不是全有或全无
  • 隐藏 secret 很困难 - 隐藏在代码中的 secret 不会长期保密
  • 不要编写自己的加密货币
  • 使用加密货币并不意味着您是安全的(攻击者会寻找较弱的链接)
  • 请注意 buffer overflows以及如何防范它们

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

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

Codebashing (付费)

Security Innovation (付费)

Security Compass (付费)

OWASP WebGoat (免费)

关于security - 每个程序员都应该了解哪些安全知识?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2794016/

相关文章:

security - IHTMLTxtRange.execCommand(“Copy”,false,null)由于IE设置而失败

java - 前端 JBoss 的安全问题 - OWASP 安全性的模糊性

java - 通过Jsoup登录保存了吗?

TCP 上的 Java 可序列化安全性

asp.net-mvc-4 - 如何扩展/自定义MVC4互联网应用程序WebSecurity/SimpleMembership

c++ - 如何将 DLL 注入(inject)任何进程?

asp.net - 我应该将(带盐的密码)存储在数据库中,还是将哈希密码和盐作为数据库中的两个不同字段存储?

sql - Web 应用程序 SQL Server 上用户/角色的最佳实践

java - 如何获取和设置networkaddress.cache.ttl的值

java - 在客户端-服务器应用程序中 : How to send to the DB the user's application password?