PHP 安全建议数据库引用了各种 PHP 项目和库中的已知安全漏洞。该数据库不得作为安全问题的主要信息来源,它对于任何引用的软件都不具有权威性,但它允许集中信息以方便和轻松使用。
PHP 安全建议数据库是免费且不受阻碍的软件,发布到公共领域。
除了手动检查之外,要检查应用程序中的漏洞,您应该使用本地 CLI 工具:
local-php-security-checker --path=/path/to/composer.lock
提示:如果您使用 Github,则可以使用 PHP 安全检查器 Github Action 在推送代码时自动检查漏洞。
提供安全建议非常简单:
您可以通过发送拉取请求或直接通过 Github 界面创建文件来贡献新条目;
根据存在安全问题的软件的 Composer 名称创建一个目录(例如,针对 Symfony HttpFoundation 组件中的问题使用symfony/http-foundation
);
每个安全问题必须保存在一个文件中,该文件的名称是 CVE 标识符(首选)或安全问题宣布的日期,后跟增量(例如2012-12-12-1
);
该文件采用 YAML 格式,并且必须包含以下条目(查看现有条目以获取示例):
title
:用几句话描述安全问题的文本;
link
:官方安全问题公告的链接(HTTPS 链接优先于 HTTP 链接);
reference
:识别软件的唯一引用(唯一支持的方案是composer://
后跟 Composer 标识符);
branches
:受影响分支的哈希值,其中名称是分支名称(例如2.0.x
),值是具有以下条目的哈希值:
time
:修复安全问题时的 UTC 日期和时间;如果问题尚未修复,则为 null(大多数情况下,修复问题的合并提交的日期,格式如下2012-08-27 19:17:44
) -- 此信息必须尽可能准确,因为它用于确定项目是否受到影响;
versions
:描述此分支受影响版本的约束数组(这与 Composer 使用的格式相同 - ['>=2.0.0', '<2.0.17']
)。
如果您有 CVE 标识符,请将其添加到cve
密钥下。
通过从该项目的根目录运行php -d memory_limit=-1 validator.php
确保您的文件通过验证。该脚本需要通过composer安装一些依赖项,因此您需要先运行composer install
。
如果某些受影响的代码可通过不同的 Composer 条目获得(例如当您具有主存储库的只读子树拆分时),请在多个文件中复制信息。