☰
security-checker进阶配置指南:自定义end-point端点与Token认证完整解析
2026/10/8 16:32:17 网站建设 项目流程

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 的工作原理 🔍

在配置之前,理解它的工作机制会让一切选项变得好懂:

  1. 解析项目的composer.lock,只提取每个包的name和version(不含源码与私有信息),见 Crawler.php 中的getLockContents();
  2. 以 POST 请求把这份精简包列表发送到检查服务端(默认端点定义在 Crawler.php 第 26 行:https://security.symfony.com/check_lock);
  3. 服务端返回漏洞明细,并从响应头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 / ansiansi
--end-point自建 security-checker 服务端 URL官方地址
--timeoutHTTP 超时秒数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 认证机制,流程非常直观:

  1. 你通过--token传入令牌(SecurityCheckerCommand.php);
  2. 内部调用setToken(),自动拼成一个请求头(Crawler.php):
public function setToken($token) { $this->addHeader('Authorization', 'Token '.$token); }
  1. 该 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),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询