我理解开源软件背后的理念,但我对安全方面更感兴趣。开源软件如何避免受到病毒或任何类型的互联网攻击?它如何长期保持安全?我听说开源软件容易受到攻击,但这种可能性比基于 Windows 的软件要小。我对此不太清楚。
为什么有些 Linux 用户不使用防病毒软件?
答案1
这并不是说它们不可能存在。而是说它们大体上不存在。
大多数开源系统的安全模型都比较复杂,而且其他开发人员对代码进行同行评审,这两者都导致了这种情况。
以下是一个例子:
对于闭源应用程序 -
您正在开发一个应用程序,并使用一些 Windows 库。当您向其传递错误的参数时,它会崩溃。您调整应用程序以正确传递参数,以便它正常工作并继续。
开源应用程序的情况相同 -
您正在开发一个应用程序,并使用一些 Linux 库。当您传递错误的参数时,它会崩溃。如果您认为传递参数的方式是合理的,您会了解它崩溃的原因,并向库包提交错误报告,并附上补丁,以使其按预期工作。如果您认为传递参数的方式是错误的,您会了解它崩溃的原因,并向库包提交错误报告,并附上补丁,以清理该输入。
发现两种场景的结果有何不同吗?
那么为什么不使用防病毒软件呢?
关于为什么不使用防病毒软件,我能想到的最佳答案是这,这, 和这。防病毒有一定的用处,但它不是解决方案。
答案2
首先,我想澄清一下,并非所有的 FOSS 软件都具有防病毒功能
程序中的病毒和错误的数量取决于开发人员和社区
但是,FOSS 软件在以下方面具有更好的抵抗病毒的能力
让我举一个例子
闭源:
X闭源软件由Y公司维护
X 软件感染病毒/漏洞
Y 公司现在必须派员工调查这个问题,因为社区没有源代码,这通常需要一些时间
由 Y 公司修复错误
开源
X 开源软件由 Z 社区和 Y 开发者/公司负责维护
X 软件感染病毒/漏洞
Y 公司/开发商尝试解决这个问题随着Z 社区
错误修复更快
因此,FOSS 软件的安全性取决于社区在开发和维护方面的实力和意愿
答案3
除了其他人所说的内容之外,归根结底是这样的:
只要有足够大的 beta 测试人员和共同开发者基础,几乎每个问题都会被快速描述出来,而且解决办法对某些人来说也是显而易见的。
用简单的英语来说:
只要有足够的眼光,所有的错误都是浅显的
通过维基百科
因此,由于所有安全问题都是错误,因此这适用。
此外,杀毒软件是最后一刻的防御手段:如果病毒/安全漏洞侵入了您的系统,其他事情也非常危险。通过开源,您可以更灵活地了解谁、什么、哪里、何时、为什么以及如何到达这一点。
答案4
如果您询问的是代码被劫持或恶意可执行文件被添加,那么真正保持安全(在偏执中)的唯一方法是手动检查源代码并自行编译,以防可下载版本包含其他恶意代码。