Ubuntu下Composer安全设置指南
root用户执行Composer命令(第三方包可能通过插件获取系统完全控制权)。创建权限受限的专用用户(如deploy),设置强密码,将项目目录所有权转移给该用户,通过su - deploy切换身份运行命令;或用sudo -u www-data composer install临时提权,仅在必要时使用。sudo apt update && sudo apt upgrade更新系统及软件包,修复已知漏洞。composer self-update升级至最新版本,及时获取安全修复补丁(旧版本可能存在未修复的漏洞)。packagist.org)安装包,避免使用未经认证的第三方源;安装时添加-vvv参数(如composer require guzzlehttp/guzzle -vvv),查看包的下载来源、哈希值及安装脚本,警惕来源不明的包。composer.lock文件记录每个依赖包的精确版本(包括子依赖),提交至版本控制系统(如Git)。生产环境部署时使用composer install --no-dev(忽略开发依赖),避免因composer.json中的版本通配符(如^8.0)导致意外升级至有漏洞的版本。require-dev部分仅包含开发环境所需的包(如测试框架、调试工具),禁止包含数据库凭证、API密钥等敏感信息;定期审查require-dev中的包,移除不再使用的测试包。--prefer-dist代替--prefer-source(默认),下载包的压缩包而非源代码(避免执行post-install-cmd等安装脚本);若必须使用--prefer-source,需提前审查包的composer.json中的scripts字段,确认无恶意操作。security-checker/security-checker包(composer require --dev security-checker/security-checker),通过vendor/bin/security-checker security:check命令检查项目依赖中的已知漏洞;添加--verbose参数查看详细报告(包括漏洞CVE编号、受影响版本、修复建议)。# .github/workflows/main.yml 示例(GitHub Actions)
name: Security Check
on: [push, pull_request]
jobs:
security-check:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Set up PHP
uses: shivammathur/setup-php@v2
with:
php-version: '8.1'
tools: composer
- name: Install dependencies
run: composer install --no-progress --prefer-dist --optimize-autoloader
- name: Run security check
run: vendor/bin/security-checker security:check --verbose
composer.json或composer.lock中硬编码敏感信息(如数据库密码、API密钥),使用环境变量(如.env文件)管理;若必须通过Composer传递敏感信息,使用composer config --global http-basic.<repo-url> <username> <password>配置认证信息,并确保.env文件不被提交至版本控制。composer.lock文件及Composer缓存(~/.composer/cache),防止数据丢失或被篡改(如恶意包删除项目文件)。