我最近听说,大多数PHP代码都是保密的,因为如果攻击者知道您的数据库结构或用于加密密码的哈希函数,则会有更大的漏洞。
我想知道,如果是这样的话,那么开放源码项目会怎么样呢?
发布于 2014-02-16 18:36:12
我最近听说,大多数PHP代码都是保密的,因为如果攻击者知道您的数据库结构或用于加密密码的哈希函数,则会有更大的漏洞。
只有当设计人员没有使用正确的散列函数或保护webapp不受SQL注入时,才会出现这种情况。但是这些东西很容易被检测到,这些天来有一些自动化工具可以通过源代码查找SQL注入漏洞(而不是将sqlmap指向webapp)。
如果你使用类似氪星的东西,你可以完全安全地告诉每个人你使用它。
MediaWiki过去常使用咸的MD5散列。salt是安装特定的,而不是开源代码的一部分(它是在安装时生成的)。这并不像它所能做到的那样安全(每个用户的盐类和使用更好的散列算法会更好),但是只要LocalSettings文件没有公开,它仍然是安全的。(诚然,这并不是一个很好的安全级别)。我想是Drupal也这么做,但是和sha512。
我想知道,如果是这样的话,那么开放源码项目会怎么样呢?
默默无闻的安全并不是安全。如果将代码放在开放环境中会影响安全性,那么您一开始就没有任何安全性。
此外,如果代码中存在安全漏洞,这些漏洞也会被贡献者捕获。例如,最近我在Bugzilla软件中发现并修补了一个与安全相关的漏洞。
发布于 2014-02-16 18:36:16
这被称为"默默无闻",对于大多数(如果不是全部)来说,这通常被认为是一个糟糕的安全模型。
有两个主要术语侧重于这一概念:
克尔霍夫原理:
一个密码系统应该是安全的,即使所有关于系统的东西,除了密钥,都是公共知识。
后来,克劳德·香农( Claude Shannon )用更笼统的措辞重新表述了这一点,成为香农的格言:
敌人知道这个系统。
关键是安全应该来自可靠的安全概念,而不是试图隐藏信息和算法。加密性强的操作确保安全性,而私有代码只确保不透明。
发布于 2014-02-16 23:22:03
我最近听说大部分PHP代码是保密的
这似乎是不正确的。在最起码,大多数PHP是没有混淆和可读性的任何人,它是分发给。
因为如果攻击者知道您的数据库结构或用于加密密码的哈希函数,则会有更高的漏洞发生。
也不对。数据库结构--没有散列函数--都不是架构初始漏洞的关键。这些在入侵后可能很有用,但在生成初始攻击时,重要的是了解站点代码中的某些缺陷或漏洞。
拥有源代码可以帮助查找安全漏洞(参见: Wordpress和Joomla插件),这并不是必要的。事实上,大多数有趣的漏洞(Windows、Flash、Internet、Acrobat等)是在没有源代码的帮助下找到的。
使您的项目开放源码使代码更容易为第三方审计(无论是否您的许可),这将导致更早发现错误和漏洞,希望使它们更快,更容易修补。
假设您的项目足够受欢迎,可以得到合理的检查,这应该意味着一旦完成初始发现和审查期间,您的项目就不太可能存在重要的安全漏洞。很难获得这方面的良好数据,但一些证据表明,流行的开源软件不太可能存在这些“休眠”漏洞,这些漏洞存在并活跃,但几十年来一直未被公开。
https://security.stackexchange.com/questions/51648
复制相似问题