如何使用Composer插件在Acquia环境下提升Drupal安全性:将PHP文件移出Web根目录

如何使用Composer插件在Acquia环境下提升Drupal安全性:将PHP文件移出Web根目录

可以通过一下地址学习composer学习地址

你是否曾为 Drupal 项目的安全性担忧?尤其是在像 Acquia 这样的托管环境中,将 php 核心文件和模块代码暴露在 Web 根目录下,总让人觉得心里不踏实。万一出现配置错误或某个文件被恶意利用,后果不堪设想。我们都知道,最佳实践是尽可能地将敏感的 PHP 代码移出公开可访问的 docroot 目录,以降低远程代码执行的风险。

然而,手动实现这一目标却是一个令人头疼的难题。你需要仔细配置 Web 服务器,调整文件路径,确保 Drupal 仍然能够正常运行,并且在每次更新或安装新模块时,都要重复这些复杂的步骤。这不仅效率低下,还极易引入新的错误。

幸好,我找到了一个优雅的解决方案,它利用 composer 的强大能力,自动化地解决了这个问题:jkribeiro/drupal-composer-paranoia-acquia 插件。

Composer 插件如何化解安全难题

jkribeiro/drupal-composer-paranoia-acquia 是一个专门为 Composer-based 的 Drupal 项目设计的插件,它与 drupal-composer/drupal-paranoia 插件协同工作,旨在提升网站的安全性,特别是在 Acquia Cloud 环境下。它的核心思想是将所有 PHP 文件移出 docroot 目录,只保留必要的资产文件(如 cssjs、图片)的符号链接和极少的 PHP 存根文件。

立即学习PHP免费学习笔记(深入)”;

这个插件的出现,直接回应了社区长期以来对 Drupal 安全性的呼吁,尤其是在应对像 SA-CONTRIB-2016-039 这样的远程代码执行漏洞时,这种文件隔离策略显得尤为重要。

部署与配置:告别手动繁琐

使用 jkribeiro/drupal-composer-paranoia-acquia 插件非常简单,只需几个步骤:

  1. 准备项目: 确保你的 Drupal 项目是基于 drupal-composer/drupal-project 构建的。

  2. 重命名 Web 根目录: 将你的 Acquia 仓库的 docroot 目录重命名为 app

    <code class="bash">mv docroot app</code>

  3. 更新 composer.json 在你的项目根目录下的 composer.json 文件中,修改 extra 部分,将 installer-paths 指向新的 app 目录,并添加 drupal-paranoia 的配置,明确 app-dirweb-dir

    如何使用Composer插件在Acquia环境下提升Drupal安全性:将PHP文件移出Web根目录

    提客AI提词器

    「直播、录课」智能AI提词,搭配抖音直播伴侣、腾讯会议、钉钉、飞书、录课等软件等任意软件。

    如何使用Composer插件在Acquia环境下提升Drupal安全性:将PHP文件移出Web根目录64

    查看详情 如何使用Composer插件在Acquia环境下提升Drupal安全性:将PHP文件移出Web根目录

    <pre class="brush:php;toolbar:false;">"extra": {     "installer-paths": {         "app/core": ["type:drupal-core"],         "app/libraries/{$name}": ["type:drupal-library"],         "app/modules/contrib/{$name}": ["type:drupal-module"],         "app/profiles/contrib/{$name}": ["type:drupal-profile"],         "app/themes/contrib/{$name}": ["type:drupal-theme"],         "drush/contrib/{$name}": ["type:drupal-drush"]     },     "drupal-paranoia": {         "app-dir": "app",         "web-dir": "docroot"     },     "...其他配置" }

  4. 安装插件: 通过 Composer 将插件安装到你的项目中。

    <code class="bash">composer require jkribeiro/drupal-composer-paranoia-acquia:~1</code>

  5. 运行安装命令: 执行以下命令,让插件完成文件结构的调整。

    <pre class="brush:php;toolbar:false;">composer drupal:paranoia composer drupal:paranoia-acquia

大功告成!插件和新的 Web 根目录现在已经成功安装。

优势与实际应用效果

经过上述配置后,你的项目文件夹结构将变得更加清晰和安全:

  • app 目录: 包含了完整的 Drupal 安装文件和所有 PHP 代码。这个目录将不会被 Web 服务器直接访问。
  • docroot 目录: 这是一个全新的、高度受限的 Web 根目录。它只包含指向 app 目录中资产文件(图片、CSS、JS)的符号链接,以及一些必要的 PHP 存根文件,用于引导 Drupal 启动。

核心优势:

  1. 显著提升安全性: 将 PHP 代码移出 Web 根目录,大大减少了因 Web 服务器配置错误或漏洞导致的远程代码执行风险。即使攻击者设法访问 docroot 目录,也无法直接执行你的核心 PHP 文件。
  2. 自动化管理: 每次你通过 Composer 安装或更新 Drupal 包时,docroot 目录都会自动重新创建。这意味着你无需手动维护文件路径或符号链接,大大减轻了开发和运维的负担。
  3. 易于维护: 如果你需要更新主题的图片、CSS 或 JS 文件,或者在某些特殊情况下需要手动重建 docroot,只需运行 composer drupal:paranoia 命令即可。
  4. 与 Acquia 环境完美融合: 这个插件专为 Acquia Cloud 环境设计,确保了在这些生产环境中的兼容性和稳定性。

最后一步,就是将这些更改提交并推送到你的 Acquia Cloud git 仓库。从此以后,你的 Drupal 项目将运行在一个更加安全、更易于管理的环境中。

通过 jkribeiro/drupal-composer-paranoia-acquia,我们不仅解决了将 PHP 文件移出 Web 根目录的难题,更重要的是,它将这一最佳实践融入了 Composer 的自动化流程,让安全不再是额外负担,而是项目构建的一部分。这无疑是 Drupal 开发者在追求更高安全性和效率道路上的一个重要里程碑。

以上就是如何使用Composer插件在Acquia环境下提升Drupal安全性:将PHP文件移出Web根目录的详细内容,更多请关注

上一篇
下一篇
text=ZqhQzanResources