使用 Checkpoint 对 Laravel 应用进行安全问题审计

最后更新于 经过

使用 Checkpoint 镜像对 Laravel 应用进行安全问题审计

检查点 经过 安德烈亚·波拉斯特里 这是一个开发依赖项,它会扫描 Laravel 应用程序的安全问题,并通过一条 Artisan 命令报告这些问题。它会运行 26 项独立的检查,涵盖从依赖项 CVE 审计到源代码级模式匹配以检测注入漏洞等各个方面,并在检查失败时返回非零退出代码,因此可以作为部署前的先决条件。

将其作为开发依赖项安装并运行扫描:

作曲家 要求 --dev andreapollastri/检查点
php 工匠 检查点:扫描

该软件包会自动发现其服务提供商,因此无需注册。它面向 PHP 8.1 及更高版本,并支持 Laravel 8 至 13。

扫描的目的是什么?

这 26 项检查分为几个组。在依赖项方面,Checkpoint 会向……收费。 composer audit 此外,还进行了 npm 审计,以发现已知的 CVE,标记最近几天发布的软件包(常见的恶意软件信号),并查找供应商自动加载器中的可疑条目。

对于源代码,它会针对那些容易引入漏洞的结构进行模式匹配:例如带有变量插值的原始查询、未转义的 Blade 输出、通过函数注入命令等。 execshell_exec 文件操作中的路径遍历、出站 HTTP 调用中的 SSRF、不安全的反序列化和开放重定向。

第三组检查应用程序配置和安全性:缺少 CSRF 保护、批量赋值暴露、cookie 和会话设置、CORS 规则、禁用的 TLS 验证、遗留的调试调用等。 dd()dump() 弱哈希、不安全的随机数生成、全球可读 .env 文件和敏感路径缺失 .gitignore

每个发现都会打印出 PASS、WARN 或 FAIL 严重程度以及一个稳定的 12 字符哈希值来标识它。

运行部分检查

您可以使用以下命令将运行范围缩小到特定检查: --only 或者排除噪声数据 --skip 以逗号分隔的列表形式传递支票名称:

php 工匠 检查点:扫描 --仅限= SQL注入风险,CSRF防护
php 工匠 检查点:扫描 --skip= “NPM CVE 审计,调试生产代码中的函数”

对于管道而言, --json 将人类可读的报告替换为机器输出,命令以代码退出。 1 如果任何检查失败:

php 工匠 检查点:扫描 --json

配置和抑制结果

发布配置文件以切换各个检查项并调整其行为:

php 工匠 供应商:发布 --tag=checkpoint-config

生成的 config/checkpoint.php 允许您禁用不适用的检查,例如关闭仅包含 PHP 的项目上的 npm 审核,并调整包新鲜度阈值:

“检查” => [
检查\ComposerAuditCheck ::班级 => 真的 ,
检查\NpmAuditCheck ::班级 => 错误的 ,
],
'包装新鲜度' => [
'minimum_age_days' => 3 ,
“白名单” => [
'andreapollastri/checkpoint' ,
],
],

当支票上显示的内容您已审核并接受时,请将其哈希值添加到…… suppressed 这样就不会在后续运行中失败,而不会完全忽略检查:

“被压制的” => [
'3ff08f5321c5' ,
'788146a4921b' ,
],

CI/CD 脚手架和自定义检查

Checkpoint 可以为您生成管道配置。 php artisan checkpoint:github 写一个 .github/workflows/checkpoint.yml 它基于推送和拉取请求运行,并且 php artisan checkpoint:gitlab 生成 GitLab 的等效版本。 php artisan checkpoint:install-hooks 该命令会将扫描结果附加到您的 Composer 中。 post-update-cmdpost-install-cmd 脚本。

您可以通过扩展来添加自己的检查。 AbstractCheck 并返回 CheckResult :

使用 检查点\检查\抽象检查 ;
使用 检查点\检查\检查结果 ;
班级 我的自定义检查 延伸 摘要检查
{
民众 功能 姓名 () : 细绳
{
返回 “我的自定义支票” ;
}
民众 功能 跑步 () : 检查结果
{
返回 检查结果 :: 经过 “一切看起来都不错。” (英文):
}
}

关于供应链安全的说明

文档中提到一点,无论您是否采用 Checkpoint,这一点都适用:运行 composer install , npm install 而且,扫描本身应该在 Docker 容器内进行,而不是直接在您的机器上运行。恶意软件包会在安装后脚本中运行其有效载荷,而这些脚本会在任何扫描器有机会检查代码之前执行,因此受感染的依赖项可以在安装后立即采取行动。Andrea 还建议将扫描与以下工具结合使用: 安全链 它会在安装前阻止已知的恶意 npm 包。这就是 Checkpoint 包新鲜度检查背后的原理,它会标记最近发布的依赖项以防万一。

Checkpoint 是一个静态扫描器,因此它捕获的是模式而非可利用性,它最适合与依赖项锁定和人工审查结合使用。您可以阅读文档并浏览源代码。 GitHub

Yannick Lyn Fatt 的照片

Laravel News 的特约撰稿人和全栈 Web 开发人员。

归档于:
立方体

Laravel 时事通讯

加入超过 4 万名开发者的行列,不错过任何新的技巧、教程等内容。

图像
Laravel 代码审查

几天内即可获得 Laravel 代码审查方面的专家指导

访问 Laravel 代码审查
PhpStorm 标志

PhpStorm

首选的 PHP IDE,对 Laravel 及其生态系统提供广泛的开箱即用支持。

PhpStorm
Lucky Media 标志

幸运传媒

Get Lucky Now——拥有十余年经验的 Laravel 开发理想之选!

幸运传媒
Tinkerwell 徽标

廷克威尔

Laravel 开发者必备的代码运行器。可在本地和生产环境中体验 AI、自动补全和即时反馈功能。

廷克威尔
SaaSykit:Laravel SaaS 入门套件徽标

SaaSykit:Laravel SaaS 入门套件

SaaSykit 是一个多租户 Laravel SaaS 入门套件,包含运行现代 SaaS 所需的所有功能,例如支付、美观的结账界面、管理面板、用户仪表盘、身份验证、现成组件、统计数据、博客、文档等等。

SaaSykit:Laravel SaaS 入门套件
了解 Softtech 的标志

了解软科技

Acquaint Softtech 提供 AI 就绪的 Laravel 开发人员,48 小时内即可上手,每月费用为 3000 美元,没有冗长的销售流程,并提供 100% 退款保证。

了解软科技
Laravel Cloud 标志

Laravel 云

轻松创建和管理服务器,并在几秒钟内部署 Laravel 应用程序。

Laravel 云
鱼叉:新一代时间跟踪和发票标志

Harpoon:新一代时间跟踪和发票系统

新一代时间跟踪和计费软件,帮助您的机构规划和预测盈利的未来。

Harpoon:新一代时间跟踪和发票系统
Kirschbaum 标志

樱桃树

提供创新和稳定性,确保您的Web应用程序取得成功。

樱桃树
Shift 标志

转移

还在运行旧版本的 Laravel?立即实现 Laravel 自动升级和代码现代化,让您的应用程序保持最新状态。

转移
绝不妥协标志

绝不妥协

来自 No Compromises 播客的两位经验丰富的开发者 Joel 和 Aaron 现在可以为您的 Laravel 项目提供服务。⬧ 固定费用 9500 美元/月。⬧ 无冗长的销售流程。⬧ 无需签订合同。⬧ 100% 退款保证。

绝不妥协
Laravel 13.13 图片中使用 Bus::bulk() 进行批量作业调度

Laravel 13.13 中使用 Bus::bulk() 进行批量作业调度

阅读文章
使用 Truffle 图像的内存 Eloquent 模型

使用 Truffle 的内存 Eloquent 模型

阅读文章
使用 MigrAlign 镜像检测并解决 Laravel Schema Drift 问题

使用 MigrAlign 检测并解决 Laravel Schema Drift 问题

阅读文章
Laravel Cloud 新增 Scale-to-Zero 和消费限制 图片

Laravel Cloud 新增零扩展和消费限额功能

阅读文章
Shift + AI = Laravel 全自动升级图片

Shift + AI = Laravel 全自动升级

阅读文章
Laracon AU 2026 公布完整演讲嘉宾阵容、日程安排和研讨会图片

Laracon AU 2026 公布完整演讲嘉宾阵容、日程安排和研讨会信息

阅读文章