
你是否曾为 Drupal 项目的安全性担忧?尤其是在像 Acquia 这样的托管环境中,将 PHP 核心文件和模块代码暴露在 Web 根目录下,总让人觉得心里不踏实。万一出现配置错误或某个文件被恶意利用,后果不堪设想。我们都知道,最佳实践是尽可能地将敏感的 PHP 代码移出公开可访问的 docroot 目录,以降低远程代码执行的风险。
然而,手动实现这一目标却是一个令人头疼的难题。你需要仔细配置 Web 服务器,调整文件路径,确保 Drupal 仍然能够正常运行,并且在每次更新或安装新模块时,都要重复这些复杂的步骤。这不仅效率低下,还极易引入新的错误。
幸好,我找到了一个优雅的解决方案,它利用 Composer 的强大能力,自动化地解决了这个问题:jkribeiro/drupal-composer-paranoia-acquia 插件。
jkribeiro/drupal-composer-paranoia-acquia 是一个专门为 Composer-based 的 Drupal 项目设计的插件,它与 drupal-composer/drupal-paranoia 插件协同工作,旨在提升网站的安全性,特别是在 Acquia Cloud 环境下。它的核心思想是将所有 PHP 文件移出 docroot 目录,只保留必要的资产文件(如 CSS、JS、图片)的符号链接和极少的 PHP 存根文件。
立即学习“PHP免费学习笔记(深入)”;
这个插件的出现,直接回应了社区长期以来对 Drupal 安全性的呼吁,尤其是在应对像 SA-CONTRIB-2016-039 这样的远程代码执行漏洞时,这种文件隔离策略显得尤为重要。
使用 jkribeiro/drupal-composer-paranoia-acquia 插件非常简单,只需几个步骤:
准备项目: 确保你的 Drupal 项目是基于 drupal-composer/drupal-project 构建的。
重命名 Web 根目录: 将你的 Acquia 仓库的 docroot 目录重命名为 app。
<code class="bash">mv docroot app</code>
更新 composer.json: 在你的项目根目录下的 composer.json 文件中,修改 extra 部分,将 installer-paths 指向新的 app 目录,并添加 drupal-paranoia 的配置,明确 app-dir 和 web-dir。
<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"
    },
    "...其他配置"
}安装插件: 通过 Composer 将插件安装到你的项目中。
<code class="bash">composer require jkribeiro/drupal-composer-paranoia-acquia:~1</code>
运行安装命令: 执行以下命令,让插件完成文件结构的调整。
<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 启动。核心优势:
docroot 目录,也无法直接执行你的核心 PHP 文件。docroot 目录都会自动重新创建。这意味着你无需手动维护文件路径或符号链接,大大减轻了开发和运维的负担。docroot,只需运行 composer drupal:paranoia 命令即可。最后一步,就是将这些更改提交并推送到你的 Acquia Cloud Git 仓库。从此以后,你的 Drupal 项目将运行在一个更加安全、更易于管理的环境中。
通过 jkribeiro/drupal-composer-paranoia-acquia,我们不仅解决了将 PHP 文件移出 Web 根目录的难题,更重要的是,它将这一最佳实践融入了 Composer 的自动化流程,让安全不再是额外负担,而是项目构建的一部分。这无疑是 Drupal 开发者在追求更高安全性和效率道路上的一个重要里程碑。
以上就是如何使用Composer插件在Acquia环境下提升Drupal安全性:将PHP文件移出Web根目录的详细内容,更多请关注php中文网其它相关文章!
 
                        
                        PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!
 
                 
                                
                                 收藏
收藏
                                                                             
                                
                                 收藏
收藏
                                                                             
                                
                                 收藏
收藏
                                                                            Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号