2016-11-23 15 views
3

只是考虑加强我们的Apache/PHP服务器安装并思考一般方法。是否有可能创建一个配置,只有在“签名”或哈希总和(例如MD5)已知时才会执行php代码?Apache/PHP:强制执行已签名的代码(或已知的MD5)

有没有人有建议?

+1

这实际上是一个Apache模块的好主意,但我认为Apache(或任何其他我知道的服务器)目前无法做到这一点。一些问题显然是签名密钥(如何以及在哪里存储签名密钥以及文件签名)和性能(Apache需要检查每个请求上的签名,这在计算上非常密集)的密钥管理。但我很喜欢这个想法。 (也MD5是不适合这个,但这只是一个技术细节。) –

+1

@GaborLengyel我认为这应该是一个PHP模块。除了可以与NGINX或CLI(或禁止 - IIS)一起使用外,它还可以与OPCache系统集成以缓解性能问题 - 签名检查仅在缓存得到更新时执行,并且只有有效的代码被加载缓存。一个简单的逻辑临时工具可以通过[auto_prepend](http://php.net/manual/en/ini.core.php#ini.auto-prepend-file)指令 –

+0

来实现。那么你可以加密你的使用ioncube装载机的php代码(www.ioncube.com/)。它可以防止未经授权更新php代码。也可以编写一个自定义的PHP脚本,将当前的PHP页面的散列与已知有效的存储散列进行比较。 –

回答

3

只是一个脑袋:我不会在这里推荐MD5。

也就是说,PHP Archives (a.k.a. Phar)支持通过OpenSSL进行代码签名。这用于random_compat(参见:random_compat.pharrandom_compat.phar.pubkey; .asc文件是.pubkey文件的GPG签名)。

我们用来生成带符号Phars的代码位于here