PHP有phar.readonly设置,默认启用,只能通过配置文件禁用.
此选项禁用使用phar流或Phar对象的写入支持创建或修改Phar存档.应始终在生产计算机上启用此设置,因为phar扩展的便捷写入支持可以允许在与其他常见安全漏洞结合时直接创建基于php的病毒.
在此上下文中,写入支持的默认阻塞是什么原因?
有更多通用的,随时可用的PHP编写方式,从安全的角度来看,Phar的写支持究竟是什么"方便"?
如果您需要在不设置只读的情况下进行写入,则可以使用 ZIP 或 GZ 容器。有关更多信息,请参阅Phar、Tar 和 Zip 的头对头比较。
从黑客的角度来看,只读 PHAR 可以有效地将其锁定。如果您的 PHP Web 版本(mod_php、php-cgi 或其他)具有默认值,那么这使得攻击基于 Phar 的应用程序变得非常困难,因为phar.readonly=1在执行过程中可能会被覆盖。
还有一个性能优势,即文件仅以 R/O 方式打开,并且 Web 请求(本质上可以是并发的)可以访问和使用 Phar,而无需文件锁定。
您通常会使用 @scribu 描述的 CLI 包装器在测试配置上构建 Phar,然后只需将 Phar 复制到相关应用程序目录即可将其安装在可公开访问的 Web 服务上。