请问哪里可以做网站,电子商务网站功能设计,大型门户网站后端,做网站必须有站点吗什么是开源#xff1f;
开源软件是其源代码已由其版权所有者公开的软件。在真正的开源许可证下#xff0c;软件是协作开发的#xff0c;其他程序员可以查看、修改或使用自己的代码。这种“纯”开源模式通常被称为FOSS#xff08;自由和开源软件#xff09;。
开源的一个…什么是开源
开源软件是其源代码已由其版权所有者公开的软件。在真正的开源许可证下软件是协作开发的其他程序员可以查看、修改或使用自己的代码。这种“纯”开源模式通常被称为FOSS自由和开源软件。
开源的一个变体是“源代码可用”这意味着没有授予修改或以其他方式使用代码的权限但它可供检查。出于安全目的这与真正的开源一样好因此当我在本文中提到“开源”时我包含“源代码可用”的代码。
什么是闭源
大多数软件都是由商业公司编写和开发的。可以理解的是这些公司热衷于不让其他人窃取他们的辛勤工作或商业机密因此他们使用加密隐藏他们的代码以免被窥探任何未经许可使用或修改代码的尝试都将导致诉讼或更糟。
那么问题出在哪里呢
正如我所说这一切都是可以理解的但是在安全性方面它提出了一个主要问题。如果没有人能看到程序所做的事情的细节我们怎么知道它没有做恶意的事情呢基本上我们不能所以我们只需要信任所涉及的公司这是我们偏执的安全类型不愿意做的事情有充分的理由。
为什么开源是最好的解决方案
如果代码是开源的那么它可以由任何有资格这样做的人独立检查和审计以检查是否存在后门、漏洞或其他安全问题。开源不是一个完美的解决方案见下文但它是验证软件是否只做它应该做的事情的唯一方法。
即使代码尚未经过审核它可免费进行审核的事实也强烈表明它是可以信任的因为开发人员不太可能包含恶意代码然后让任何愿意查看的人发现它。
不是一个完美的解决方案...
不幸的是拥有审核开源软件通常是免费的的技能和时间的人数量有限这意味着绝大多数开源程序尚未经过审核。
这个问题变得更加复杂因为许多开源程序非常复杂包含成千上万的代码行所以即使它们已经过审计审计人员也完全有可能错过了一个问题特别是如果恶意代码被故意隐藏。
但。。。
因此开源并不能保证程序是“干净的”但它仍然是我们拥有或可以拥有最好的保证。另一种选择是闭源不提供任何保证。
始终验证开源程序
因此开源对安全性非常有用。耶但是你怎么能确定你刚刚下载的开源程序没有被以某种方式篡改呢
这听起来像是妄想的阴谋幻想但在 2016 年 月最流行的 Linux 开源操作系统版本之一 Linux Mint 的网站遭到黑客攻击下载者可以使用该操作系统的受损版本
黑客制作了一个修改后的Linux Mint ISO里面有一个后门并设法入侵我们的网站以指向它。
受感染的Linux ISO映像安装了带有Internet Relay ChatIRC后门Tsunami的完整操作系统这使攻击者可以通过IRC服务器访问用户的系统。所以威胁是非常真实的。
在这种情况下费心对文件的 MD5 哈希进行校验和的下载者会发现欺骗但这种哈希检查并不是可靠的保护因为如果网站首先可以被黑客入侵那么用验证所包含文件的虚假校验和替换已发布的校验和是微不足道的。
对于开发人员来说更好的是对其软件进行数字签名以便用户可以验证文件的来源Mint 开发人员在这方面非常宽松因为他们的软件没有进行数字签名甚至使用的 MD5 哈希函数也已知已损坏
请参阅我的文章 数字签名 - 为什么以及如何使用它们以获取更多信息。不幸的是验证数字签名是一种痛苦但如果您关心安全性这是必要的。
我还应该指出理想情况下所有软件都应该进行数字签名和验证但由于任何人都可以自由修改开源代码因此它比封闭源代码更容易篡改。因此验证开源程序尤为重要。
开源结论
开源不是一个完美的解决方案但它提供了最好的也是唯一保证软件是可信的。另一种选择是闭源它不提供任何保证除了对公司的盲目信任这是科技公司不值得的信念。