我知道SQL注入是一个...其他人是什么...编码时我需要考虑哪些安全问题?
回答
OWASP.org保留一个列表。从OWASP top ten开始。
Buffer overflows是经典的,如果你写C,因为他们经常允许攻击者执行任意代码。
这是网络的东西,但自从你离开它开放式的......
JavaScript注入。如果您允许任何来自输出源的输入,则可以在输入中输入JavaScript,然后在输出时(除非正确编码/解码),它将输出原始javascript。
发送纯文本密码而不先加密它们绝不是一个好主意。
从不存储明文密码。 (我无法告诉你我为我的公司评估了多少商业软件包,然后在我给他们打电话时对其采取了冷静措施。我最喜欢的一个来自CRM供应商的借口:“您的最终用户通常会拥有企业管理器或查询分析器在他们的桌面上?“)
如何验证用户输入?例如,你期待一个10位数的电话号码,但你会得到“800OHNOES!”
在处理之前按摩并过滤所有输入到您的程序。
切勿在不进行筛选和截断的情况下处理输入。
-R
或者更一般地说,不要相信用户。 – 2008-11-10 07:23:23
你可以考虑这本书的章节是一个相当不错的清单...
简单的防守编程。对于每个函数/方法/过程/子例程,请考虑“什么是预期输入?当输入偏离该输入时该怎么办?我怎样才能最轻松地确保输入不会偏离该输入。”了解你的意见;知道你的输出。不要太过分,而且要明白数据库中的数据可能已经被破坏。如果某个特定的数据集可以用某种特定的方式进行约束,那么选择你的数据类型和变量来播放。保持数字的东西数字。
每当我在程序中看到一个字符串对象时,我都会问:“如果这个字符串包含Gilbert和Sullivan歌曲的歌词会发生什么?简单的if-else检查和函数开头的提前返回语句可以防止这类事件在后期造成严重破坏。
其他人都说过这个,但是...
基本上所有的安全漏洞都来自于数据。如果你的程序没有处理任何数据,它可能是安全的。它也可能是相当无用的:)。
这导致我认为是什么使代码安全的核心理念:
不要相信你的数据。永远。
消毒所有可能的东西。你可以依赖你的平台的安全保证(例如,你很可能看不到像Java或C#这样的托管语言中经典的基于字符串的缓冲区溢出),但是否则你需要验证应用程序中的所有内容。
除了关于OWASP的精彩指南,还请查看SANS/CWE。
我喜欢用Threat Modeling Tools来模拟我的系统。这个特定的模型允许您对不同的应用程序建模,并根据模型以及一些缓解措施和风险为您提供关于哪些类型的威胁适用的所有类型的信息。它还让您在整个开发过程中跟踪这些风险。生命周期来制定缓解计划。它太酷了。 :)
我第二次为推荐:19 Deadly Sins of Software Security
它不只是一个清单,读得懂很多的软件安全性的各个方面。有些是广泛的项目,可以让您了解许多不同安全问题背后的原因。
- 1. 在编写HTTP代理时,我需要考虑哪些安全问题?
- 2. 使用HTML5shiv时需要考虑哪些问题?
- 3. 使用Google App Engine时需要解决哪些安全问题?
- 4. 阅读文件时,我是否需要考虑单一编码?
- 5. 如果从ASP.Net web应用程序中退出,需要考虑哪些安全问题?
- 6. 在使用Microsoft Sync Framework时需要考虑哪些因素
- 7. 在开发SMTP客户端时需要考虑哪些RFC?
- 8. 实施IDisposable时需要考虑哪些风险?
- 9. 在开发IMAP客户端时需要考虑哪些RFC?
- 10. 在开发POP3客户端时需要考虑哪些RFC?
- 11. 为安卓游戏制作图片需要考虑哪些分辨率参考?
- 12. 设计散列函数时你会考虑哪些问题?
- 13. Android登录面板:有哪些安全方面应该考虑
- 14. 更改Java文件的编码时需要考虑的事项
- 15. rails,滚动我自己的认证系统,我应该考虑哪些安全问题?
- 16. 关闭php4安全模式 - 需要考虑什么?
- 17. 火花安全考虑
- 18. 乳胶安全考虑
- 19. 包含文件时的安全考虑
- 20. 在Java中创建可靠的多线程可伸缩应用程序时需要考虑哪些问题?
- 21. 在开发书签时需要考虑什么样的设计和安全考虑因素?
- 22. 为数据仓库选择SCD类型时,您需要考虑哪些事项?
- 23. 迁移到早期版本的C#时需要考虑哪些因素?
- 24. 在为30 TB数据选择Graph DB时需要考虑哪些因素
- 25. ConstructorInfo.Invoke的DynamicMethod,我需要考虑什么?
- 26. 我需要安装哪些sdk版本?
- 27. 开发类似于ASP.NET会话的系统时需要考虑的安全问题
- 28. 当需要记录时,您会考虑哪种设计模式?
- 29. 使用“exec”php命令考虑安全问题
- 30. Dojo:主题vs事件,应考虑哪些设计考虑因素?
给予更多的细节(语言,架构)将有助于一吨。 – 2008-11-04 15:50:13