security-checker进阶配置指南:自定义end-point端点与Token认证完整解析
【免费下载链接】security-checkerPHP frontend for security.symfony.com项目地址: https://gitcode.com/gh_mirrors/se/security-checker
security-checker(SensioLabs Security Checker)是 Symfony 生态中用于检查 composer.lock 依赖安全漏洞的 PHP 命令行工具。本文带你完整掌握它的两个进阶配置:自定义--end-point端点与--token认证,让你能把检查服务指向自建服务器,轻松接入私有漏洞库。
一、先搞懂 security-checker 的工作原理 🔍
在配置之前,理解它的工作机制会让一切选项变得好懂:
- 解析项目的
composer.lock,只提取每个包的name和version(不含源码与私有信息),见 Crawler.php 中的getLockContents(); - 以 POST 请求把这份精简包列表发送到检查服务端(默认端点定义在 Crawler.php 第 26 行:
https://security.symfony.com/check_lock); - 服务端返回漏洞明细,并从响应头
x-alerts中读取漏洞数量,封装成 Result 对象输出,见 Crawler.php 的check()方法。
💡 因为默认走官方服务器,所以很多团队希望把请求指到自己的自建 security-checker 服务端——这正是
--end-point和--token两大参数存在的意义。
二、快速上手:安装与第一次检查 ⚡
两种方式任选其一:
# 方式一:Composer 全局安装 composer global require sensiolabs/security-checker # 方式二:克隆源码仓库安装 git clone https://gitcode.com/gh_mirrors/se/security-checker cd security-checker && php composer.phar install然后对任意 Composer 项目执行:
security-checker /path/to/composer.lock命令入口是 security-checker,它注册了security:check命令(SecurityCheckerCommand.php)。
⚠️版本提示:README.md 说明官方在线服务已于 2021 年 1 月底停止,官方推荐本地化替代方案。因此本文重点讲解如何把工具指向自建/企业内网端点,这也是
--end-point最常见的真实用途。
三、自定义 end-point 端点:把检查服务指向你的服务器
1. 默认端点在哪里定义?
默认服务地址是硬编码在 Crawler 类里的:
- Crawler.php ——
$endPoint = 'https://security.symfony.com/check_lock' - Crawler.php ——
setEndPoint()方法可随时改写它
而命令行参数--end-point正是通过setEndPoint()生效的,接线逻辑在 SecurityCheckerCommand.php:
if ($endPoint = $input->getOption('end-point')) { $this->checker->getCrawler()->setEndPoint($endPoint); }2. 最快配置方法:一条命令切换端点
# 指向自建服务(内网地址示例) security-checker composer.lock --end-point=http://10.0.0.8:8080/check_lock # 搭配超时设置,避免内网慢请求卡住(单位:秒) security-checker composer.lock \ --end-point=http://intranet.example.com/api/security \ --timeout=60| 参数 | 作用 | 默认值 |
|---|---|---|
lockfile(位置参数) | 要检查的 composer.lock 路径 | composer.lock |
--format | 输出格式:text / json / yaml / markdown / ansi | ansi |
--end-point | 自建 security-checker 服务端 URL | 官方地址 |
--timeout | HTTP 超时秒数 | 20 |
--token | 服务端认证令牌 | 空 |
参数完整定义见 SecurityCheckerCommand.php。
3. 输出格式怎么选?
--format会转换为对应的Accept请求头,由服务端决定返回的格式,映射关系在 Crawler.php:
# 集成到 CI 时推荐 JSON,方便脚本解析 security-checker composer.lock --end-point=http://my-server/check_lock --format=json四、Token 认证完整解析:自建服务如何鉴权 🔑
自建端点通常不会裸奔,security-checker 内置了Token 认证机制,流程非常直观:
- 你通过
--token传入令牌(SecurityCheckerCommand.php); - 内部调用
setToken(),自动拼成一个请求头(Crawler.php):
public function setToken($token) { $this->addHeader('Authorization', 'Token '.$token); }- 该 Header 会随每次请求一起发送(Crawler.php 中
array_merge($this->headers, ...)),即你的服务端会收到:
Authorization: Token abc123xyz使用示例
# 自建端点 + Token 认证,一次配齐 security-checker composer.lock \ --end-point=http://intranet.example.com/api/security \ --token=abc123xyz \ --timeout=60 \ --format=markdown💡 除 Token 外,还可以用
addHeader()(Crawler.php)在代码集成时追加任意自定义请求头,例如企业网关要求的X-Api-Key。
五、进阶:在 PHP 代码中以 API 方式集成 🧩
如果不想走命令行,SecurityChecker 本身就是一个可直接实例化的类:
use SensioLabs\Security\SecurityChecker; use SensioLabs\Security\Crawler; $crawler = new Crawler(); $crawler->setEndPoint('http://intranet.example.com/api/security'); // 自定义端点 $crawler->setToken('abc123xyz'); // Token 认证 $crawler->setTimeout(60); $checker = new SecurityChecker($crawler); $result = $checker->check('composer.lock', 'json'); echo count($result); // 漏洞数量,>0 时 CI 应判为失败注意退出码设计:发现漏洞时命令返回 1(SecurityCheckerCommand.php),非常适合在 CI 流水线中作为质量门禁。
六、常见问题排查清单 ✅
| 现象 | 原因 | 解决 |
|---|---|---|
The web service failed (HTTP 400) | 端点拒绝请求(如 Token 错误) | 检查--token与--end-point是否配对,见 HttpException.php |
The web service did not return alerts count. | 自建服务端未返回x-alerts响应头 | 服务端需按协议在 Header 中返回漏洞数(Crawler.php) |
| 请求长时间无响应 | 内网链路慢 | 加大--timeout |
提示Lock file does not exist | 路径写错 | 确认传的是composer.lock,见 SecurityChecker.php |
七、小结:一张表记住全部进阶配置 📌
security-checker <composer.lock 路径> --end-point=<自建端点 URL> # 切换服务地址(核心) --token=<令牌> # Authorization: Token <令牌> --timeout=<秒> # HTTP 超时 --format=<格式> # ansi / text / json / yaml / markdown掌握--end-point+--token这一组合,security-checker 就从“调用官方服务的小工具”升级成了可完全私有化部署的依赖安全扫描器:数据不出内网、漏洞库由你掌控、还能与企业网关鉴权无缝对接。
【免费下载链接】security-checkerPHP frontend for security.symfony.com项目地址: https://gitcode.com/gh_mirrors/se/security-checker
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考