enlightn:实践指南

作者:袖梨 2026-09-11

实际评估enlightn时,我先确认它解决的具体问题:您的性能和安全顾问,工匠指挥。在安全分析场景里,常见问题是授权边界、证据完整性和误报需要同时控制,这正是评估时需要盯住的地方。我的评估方法是在明确授权的样例或离线靶场中验证,然后检查输入边界、证据链、误报率和安全中止机制是否与文档一致。我的判断是,它更适合具备授权环境和复核能力的安全人员;若眼下没有这类需求,先保留观察即可。

Enlightn

A Laravel 工具来提升应用程序的性能 & Security

简介

将 Enlightn 视为您的性能和安全顾问。 Enlightn 将“审查”您的代码和服务器配置,并为您提供有关提高性能、安全性和可靠性的可行建议!

Enlightn OSS(开源软件)版本具有 66 项自动检查功能,可扫描您的应用程序代码、Web 服务器配置和路由,以识别性能瓶颈、可能的安全漏洞和代码可靠性问题。

Enlightn Pro(商业版)可在 Enlightn 网站 上购买,并具有额外的 64 项自动检查(总共 131 项检查)。

性能检查(37 项自动检查,包括 19 项 Enlightn Pro 检查)

  • 性能快速获胜(Laravel 内置):路由缓存、配置缓存等。
  • ⏳ 性能瓶颈识别:中间件膨胀、缓慢、重复和 N+1 查询的识别等。
  • 服务资产:缩小、缓存标头、CDN 和压缩标头。
  • 基础设施调优:Opcache、缓存命中率、单服务器设置的 unix 套接字等。
  • 选择正确的驱动程序:为您的应用程序选择正确的会话、队列和缓存驱动程序。
  • 良好实践:单独的 Redis 数据库进行锁、不要在生产中安装开发依赖项等。

安全检查(49 项自动检查,包括 28 项 Enlightn Pro 检查)

  • :lock: 基本安全:关闭生产中的应用程序调试、应用程序密钥、CSRF 保护、登录限制、哈希强度等。
  • :cookie:Cookie 安全和会话管理:Cookie 加密、安全 Cookie 属性、会话超时等。
  • :black_joker:质量分配:检测质量分配漏洞、无防护模型等。
  • :radioactive: SQL 注入攻击:检测原始 SQL 注入、列名 SQL 注入、验证规则注入等。
  • :scroll: 安全标头:XSS、HSTS、点击劫持和 MIME 保护标头。
  • :file_folder:无限制文件上传和DOS攻击:检测目录遍历、存储DOS、无限制文件上传等。
  • :syringe:注入和网络钓鱼攻击:检测命令注入、主机注入、对象注入、开放重定向等。
  • :package: 依赖管理:后端和前端漏洞扫描、稳定和最新的依赖检查、许可等。

可靠性检查(45 项自动检查,包括 17 项 Enlightn Pro 检查)

  • 代码可靠性和错误检测:无效的函数调用、方法调用、偏移、导入、返回语句、语法错误、无效的模型关系等。
  • :muscle: 健康检查:缓存、DB、目录权限、迁移、磁盘空间、符号链接、Redis 等的健康检查。
  • :gear:检测错误配置:缓存前缀、队列超时、失败的作业超时、Horizon 配置计划、逐出策略等。
  • :ghost: Dead Routes and Dead Code:检测死路由和 dead/unreachable 代码。
  • :medal_sports: 良好实践:缓存清除、Composer 脚本、环境变量、避免全局变量和超全局变量等。

文档

131 项可用检查中的每一项都有详细记录。您可以在此处找到完整的文档 here。

兼容性矩阵

启蒙 拉维尔 拉拉斯坦 PHPStan
1.x 6.x-9.x 0.6x-1.x 0.12倍-1.1倍
2.x 9.x-11.x 2.x 1.4倍+

注意:相同的兼容性矩阵适用于 Enlightn Pro 版本。

安装Enlightn OSS

您可以使用 Composer 包管理器将 Enlightn 安装到您的项目中:

composer require enlightn/enlightn

安装Enlightn后,您可以使用Artisan命令vendor:publish发布其资源:

php artisan vendor:publish --tag=enlightn

注意:如果您需要安装Enlightn Pro,请访问Enlightn网站(此处为)上的文档。

跑步启蒙

安装 Enlightn 后,只需运行 enlightn Artisan 命令即可运行 Enlightn:

php artisan enlightn

如果您希望在终端之外的 Enlightn Web UI 中查看报告,您可以添加 --report 标志:

php artisan enlightn --report

如果您希望运行特定的分析器类,您可以将它们指定为可选参数:

php artisan enlightn Enlightn\Enlightn\Analyzers\Security\CSRFAnalyzer Enlightn\EnlightnPro\Analyzers\Security\DirectoryTraversalAnalyzer

请注意,类名应该是完全限定的,并使用双斜杠转义,如上所述。

建议在生产环境中运行

如果您想获得完整的 Enlightn 体验,建议您至少在生产环境中运行一次 Enlightn。这是因为 Enlightn 的一些检查是特定于环境的。因此,它们可能仅在您的应用程序环境处于生产环境时才会被触发。

如果您不想在生产环境中运行,您可以通过将 APP_ENV 设置为生产环境、设置尽可能接近生产环境的服务和配置并在本地运行生产部署脚本来模拟生产环境。然后运行 Enlightn Artisan 命令。

查看详细错误消息

默认情况下,enlightn Artisan 命令会突出显示文件路径、关联的行号以及每个失败检查的消息。如果您希望显示每行的详细错误消息,您可以使用 --details 选项:

php artisan enlightn --details

在 CI 环境中的使用

如果您希望将 Enlightn 与 CI 集成,只需在 CI/CD 工具中运行 Enlightn 时触发 --ci 选项即可:

php artisan enlightn --ci

如果您希望在 Enlightn Web UI 中查看您的 CI 报告,您可以添加 --report 标志。请记住将您的项目凭据添加到 config/enlightn.php 文件中,如 此处 所述。

php artisan enlightn --ci --report

Enlightn 为您预先配置了哪些分析仪可以在 CI 模式下运行。因此,上述命令排除了需要完整设置才能运行的分析器(e.g。使用动态分析的分析器)。

有关 CI 集成的更多信息,请参阅 Enlightn 文档。

建立基线

有时,特别是在 CI 环境中,您可能希望将当前报告的错误列表声明为“基线”。这意味着在后续运行中不会报告当前错误,并且只会标记新错误。

要自动生成基线,您可以运行 enlightn:baseline Artisan 命令:

php artisan enlightn:baseline

如果您希望在 CI 模式下运行此命令,可以使用 --ci 选项:

php artisan enlightn:baseline --ci

有关建立基线的更多信息,请参阅 文档。

网页 UI

Enlightn 提供了一个漂亮的 Web UI 仪表板,您可以在其中查看从 CI 或计划的命令运行触发的 Enlightn 报告。

网络 UI 对所有用户免费,包括以下内容:

  1. 通过率统计(总体和按类别)。
  2. 所有失败的检查以及与检查相关的代码片段(如果有)。
  3. 新问题和已解决问题数量的指标(与在同一应用程序 URL、环境和项目上运行的最新报告相比)。

要访问 Web UI,您所需要做的就是在 Enlightn 网站上免费注册,并按照此处 中提到的 [的说明进行操作。

安排 Enlightn 运行

除了将 Enlightn 与 CI/CD 工具集成之外,按固定频率(例如每天或每周)安排 Enlightn 运行也是一个很好的做法,如下所示:

// In your app/Console/Kernel.php file:

/**
 * Define the application's command schedule.
 *
 * @param  IlluminateConsoleSchedulingSchedule  $schedule
 * @return void
 */
protected function schedule(Schedule $schedule)
{
    $schedule->command('enlightn --report')->runInBackground()->daily()->at('01:00');
}

这将允许您监视 Enlightn 的动态分析检查,这些检查通常被排除在 CI 之外。可以在 Enlightn Web UI 上查看报告。

GitHub 机器人集成

Enlightn 提供了一个 GitHub 机器人,它可以准备一份突出显示失败检查的报告,还可以在引入新问题的代码行上添加拉取请求的审查注释。

要与 Enlightn GitHub 机器人集成,请参阅 文档。

检查失败

所有失败的检查都将包含失败原因的描述以及相关的代码行(如果适用)以及特定检查文档的链接。

报告卡

最后,运行所有检查后,enlightn Artisan 命令将输出一份报告卡,其中包含有关通过、失败或跳过的检查数量和百分比的信息。

指示为“不适用”的检查不适用于您的特定应用程序,因此被跳过。例如,CSRF 分析器不适用于无状态应用程序。

“错误”行下报告的检查表明分析仪在分析过程中因异常而失败。通常,这种情况不会发生,但如果发生,将会显示相关的错误消息,并且可能与您的应用程序有关。

我应该多久运行一次 Enlightn?

一个好的做法是每次部署代码或推送新版本时运行 Enlightn。建议将 Enlightn 与 CI/CD 工具集成,以便每次推送或新版本都会触发它。

除了自动 CI 检查之外,您还应该使用如上所述的预定控制台命令定期运行 Enlightn。这将允许您监视动态分析检查,这些检查通常被排除在 CI 之外。

精选于

使用 Enlightn 的旗舰 OSS 项目

OS 兼容性

Enlightn 仅支持 MacOS 和 Linux 系统。目前不支持 Windows。

支持政策

我们的支持政策可以在 Enlightn 文档 中找到。

相关文章

精彩推荐