php-tuf/composer-integration

使用PHP-TUF保护Composer下载的证明概念。

安装: 354

依赖者: 0

建议者: 0

安全: 0

星标: 7

关注者: 6

分支: 5

开放问题: 7

类型:composer-plugin

1.0.0-alpha11 2024-07-12 19:52 UTC

README

build

这是一个实验性的Composer插件,将Composer 2.6及以后版本与PHP-TUF结合。

该插件旨在演示在采用Composer v2包仓库时,如何将TUF安全添加到

  • Composer的包发现过程中。
  • Composer选择的下载包。

重要

此插件及其依赖的PHP-TUF库处于预发布状态,不能被视为TUF框架的完整或安全实现。

目前应仅用于测试、开发和反馈。**不要在生产环境中用于安全下载**!!

概述

该插件检查composer类型的仓库。对于包含附加密钥tuf的任何仓库,它将在包发现和下载操作期间调用PHP-TUF,以验证仓库和包没有被篡改。

根据TUF规范,使用此插件的项目必须为它们想要使用TUF保护的每个仓库提供一组受信任的密钥。每个受TUF保护的仓库应提供一个包含其根密钥的JSON文件。文件可以以几种方式命名,以下顺序将搜索

  1. 完整仓库URL的SHA-256哈希值。例如,如果仓库URL是http://repo.example.net/composer,则JSON文件可以命名为d82cfa7a5a4ba36bd2bcc9d3f7b24bdddbe1209b71ebebaeebc59f6f0ea48792.json
  2. 仓库的主机名。继续前面的例子,JSON文件可以命名为repo.example.net.json

所有根密钥文件必须存储在名为tuf的目录中,紧邻项目的composer.json文件。

TUF仓库必须跟踪Composer仓库,在发布新版本时为它们签名,以及为它们提供Composer包元数据。

使用方法

# Configure Composer to allow the plugin to run.
composer config allow-plugins.php-tuf/composer-integration true

# Install the plugin.
composer require php-tuf/composer-integration

# Enable TUF protection for a repository defined in composer.json. For example,
# if you have a Drupal site, the following will probably work.
composer tuf:protect https://packages.drupal.org/8

# Install a package with safety guaranteed by TUF!
composer require drupal/token

性能

没有办法绕过:此插件会影响Composer的性能。这是因为,对于Composer检查的每个文件(包括包元数据),TUF都需要下载其他文件,以确认Composer正在查看的文件没有被篡改。

性能影响通常并不极端,但可能非常明显,这取决于你的项目有多大以及你要求Composer做什么。性能也可能受到服务器上TUF设置的配置方式的影响,这可能对每个仓库都不同。

为了减轻这一点,插件将尽量将网络活动降到最低;它必须进行的任何网络活动都将尽量并行处理。此外,它还进行相当积极的缓存,同时保持TUF自身更新的能力。尽管如此,**你通常应该预计启用TUF时Composer的速度大约慢1.5到3倍**。