
Composer 默认强制 HTTPS 下载包,需启用 secure-http 全局配置、替换 composer.json 中所有 HTTP 仓库为 HTTPS、确认 Packagist 官方源为 HTTPS,并在 CI/CD 中显式升级 Composer 和校验配置。
Composer 默认会通过 HTTPS 协议下载包,但某些旧版本、自定义配置或镜像源可能退回到 HTTP,带来中间人攻击风险。要确保所有包源(包括 Packagist 和自定义仓库)强制走 HTTPS,需从全局配置和仓库定义两方面入手。
这是最直接的强制 HTTPS 安全开关。该选项默认为 true(Composer 2.0+),但若被手动关闭或使用老旧版本,需显式开启:
~/.composer/config.json 或 COMPOSER_HOME/config.json),影响所有项目http://packagist.org 或自定义 http://my-repo.com)将被拒绝加载,并报错 HTTP repository is disabled
即使 secure-http 开启,若 composer.json 中显式声明了 HTTP 仓库,仍会触发失败。需主动清理:

composer.json,检查 repositories 字段,将类似 "url": "http://repo.example.com" 改为 "url": "https://repo.example.com"
"https://mirrors.aliyun.com/composer/"(而非过时的 HTTP 地址)Packagist 官方源(https://packagist.org)本身只支持 HTTPS,但可通过以下方式确认未被意外覆盖:
packagist.org 对应的 URL 是 http:// 开头,说明有配置覆盖(如某插件或脚本修改了源),需定位并修正在 Docker 构建或 CI 流水线中,容易因基础镜像含旧版 Composer 或预置配置而绕过 HTTPS:
config.json 到容器,防止覆盖安全策略