软件的安全性如何变得非常简单?

时间:2010-01-11 22:35:31

标签: security api ide service

通常,我被告知安全功能在抽象级别上不可用,而具有很少安全知识的开发人员可以使用它们。开发人员在开发环境中需要做出哪些改变,对Java来说,这将使他们的软件安全性比现在更容易。

我正在寻找新的方法,例如在程序员必须声明他想要的安全功能以及他想要的级别的级别提供可配置性,并且只有真正的程序员才需要去做更多的事情。

所以2部分问题 - 您希望作为开发人员提供哪些服务?您希望如何将其集成到IDE(您的开发环境)中,以便您可以轻松使用它。

3 个答案:

答案 0 :(得分:4)

  

程序员必须声明他想要的安全功能

这就像问“我可以买什么类型的手术刀所以我不需要学习医生?”

你不能。

“安全”问题涉及广泛的问题。你不只是“打开安全性”而已经完成了。安全问题涉及保护您的软件免受越来越多的恶意行为的侵害。

根据它,计算机让人们做事。为了给用户提供自由,人们总能找到进入他们不应该进入的事物的方法。编写操作系统,框架和开发环境的人可以修补漏洞并抽象出今天安全问题的某些,但总会开发出新的安全问题。日常。这是一个不断变化的目标。

安全性很复杂,因为您 知道您的应用程序可能受到哪些类型的漏洞攻击。了解这一点的唯一方法是通过警惕的学习和经验。

你不能只是翻转开关。

答案 1 :(得分:0)

我越是想到它,我就越意识到你想要的东西确实存在。程序员使用定义良好的语言以非常具体的方式告诉计算机他们想要它做什么。在语言的定义中,计算机应该完全按照程序员的要求执行。如果程序员想要安全性,他/她可以告诉计算机以安全的方式操作 - 例如在C ++中使用String类来避免使用char数组的缓冲区溢出。

当然,这还不够。程序员仍然会出错,因此语言设计人员会尝试帮助Java等。在Java中,缓冲区溢出比简单的应用程序崩溃(char[]c = new char[1]; System.out.println(c[10]);)更难以利用。

但这还不够 - 编译器可能会出现插入溢出的错误,或者虚拟机可能存在此类错误。并且存在其他漏洞 - 例如对文件的错误权限或可利用的竞争条件(又名TOCTOU)。

当我们发现漏洞类型时,我们可以采取措施来防止它们(开发人员培训,新语言功能,新编译器功能和新的OS功能),我们可以采取措施来识别它们(动态分析,源代码分析,二进制分析),但我们无法消除所有错误。当新技术发挥作用时尤其如此(一旦理解了XSS和SQL注入,开发人员开始引入LDAP注入)。

答案 2 :(得分:0)

OWASP正在尝试使用它的ESAPI项目。

安全性工作的最佳方式是将其内置到API中,并使用特定于上下文的特定于上下文的编程方法。这就是SqlParameters在.NET中所做的事情,以及其他语言中的类似事情(它们尽可能多地获取上下文;变量类型等等,并执行验证)。

如果您想参与其中,只要您有动力,您就可以参与OWASP行动。

执行安全性的最佳方法是让其他人执行此操作,并按照API和说明进行操作。但是,您需要对执行基础工作的人员有很大的信任,并且您需要及时了解所使用的库的最新动态。

关于最后一点,你还需要保持灵活性。如果在底层系统X中发现漏洞,那么您可能需要完全更新或删除它(但很可能是更新)。你需要尽快完成这项工作。即交换哈希函数,或更改加密例程。

显然,这个领域既复杂又有趣。我建议你OWASP是一个开始的好地方。