我们知道莱纳斯的定律:
有足够的眼球,所有的虫子都很浅
一般来说,人们似乎认为开放源码软件因为这个原因而更安全,但是.
有许多小的开放源码软件项目只有一两个开发人员(大教堂模型,如ESR所描述的)。对于这些项目,发布源代码实际上降低了安全性吗?对于像Linux内核这样的项目,有成千上万的开发人员和安全漏洞很可能会被发现,但是当只有少数人浏览源代码时,当允许破解者(黑帽黑客)也看到源代码时,安全性是降低了而不是增加了吗?
我知道,封闭源代码软件相对于开放源码软件的安全优势是通过隐秘来实现安全,这是不好的(这在某种程度上是有帮助的,至少给了少数几个开发人员更多的时间(通过默默无闻的安全性无助于“如果”,而是“什么时候”)。
编辑:问题不在于开放源码软件是否比非开放源码软件更安全,而是对于那些希望防止安全漏洞被利用的开发人员来说,破解软件的优势是否更大。
发布于 2011-02-25 17:51:01
我认为它可能会降低一些安全性,因为一个开源项目太小或太模糊,以至于除了它的作者之外,没有人真正看过它。在这种情况下,您不会从社区获得任何安全方面的帮助,但是如果有人因为某种原因而将您的小项目作为目标,他们会有更轻松的时间,因为他们有源代码。这并不是说他们会有一个不可能的时间没有来源,而是有资源加速理解,无论你的意图是友好的还是恶意的。
许多最常见的web漏洞(HTML转义问题、SQL注入等)在没有源代码的情况下很容易检查,所以这并不意味着关闭就意味着安全。
我倾向于认为,您最好只是在许可证(打开或关闭)上做一些与安全无关的有意义的事情,然后将安全性视为任何一种方式都需要非常担心的东西。
发布于 2011-02-25 16:28:35
开源只是指通常可用的代码/应用程序,帮助您入门。在默认情况下,不要假设因为它是开源的--它是好代码还是坏代码,您必须始终重复检查任何代码。就质量、注释、文档而言,升级/更改是多么容易。
使用安全检查表确定所有可能的问题,并将其用于您使用的任何语言/服务器/os,无论代码是开放的还是封闭的。
发布于 2011-02-25 16:30:05
只有正确地实现经过验证的安全算法,才能保证代码的安全性。这实际上更容易用开源代码进行验证,即bug被更快地清理出来。我相信广泛使用的安全算法,如SHA等。但是,它们的可用性并不能使破解者更容易破解它们。正是它们背后已被证实的数学理论使它们变得安全。
至于小型开源项目,我想,如果代码只是半生不熟、没有功能的话,那么发布代码也是没有意义的。从安全的角度来看,这意味着应该对其进行彻底审查,最好是由尽可能多的安全专家(S)进行审查,和/或根据@crosenblum建议的安全清单进行审查。
https://softwareengineering.stackexchange.com/questions/51979
复制相似问题