enlightn/enlightn

Enlightn - 您的性能与安全顾问,只需一键即可。

v2.10.0 2024-04-05 10:49 UTC

README

tests LGPLv3 Licensed Latest Stable Version Total Downloads Twitter Follow

一款用于提升您的应用程序性能与安全的Laravel工具

Enlightn

简介

将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检查)

  • 🔒 基本安全:在生产环境中关闭应用程序调试、应用程序密钥、CSRF保护、登录限制、哈希强度等。
  • 🍪 cookie安全和会话管理:cookie加密、安全的cookie属性、会话超时等。
  • 🃏 大量赋值:检测大量赋值漏洞、未受保护的模型等。
  • ☢️ SQL注入攻击:检测原始SQL注入、列名SQL注入、验证规则注入等。
  • 📜 安全头:XSS、HSTS、点击劫持和MIME保护头。
  • 📁 无限制的文件上传和DOS攻击:检测目录遍历、存储DOS、无限制的文件上传等。
  • 💉 注入和钓鱼攻击:检测命令注入、主机注入、对象注入、开放重定向等。
  • 📦 依赖项管理:后端和前端漏洞扫描、稳定且最新的依赖项检查、许可等。

可靠性检查(包括45个自动检查和17个Enlightn Pro检查)

  • 🧐 代码可靠性和错误检测:无效的函数调用、方法调用、偏移量、导入、返回语句、语法错误、无效的模型关系等。
  • 💪 健康检查:缓存、数据库、目录权限、迁移、磁盘空间、符号链接、Redis等健康检查。
  • ⚙️ 检测配置错误:缓存前缀、队列超时、失败作业超时、Horizon提供计划、驱逐策略等。
  • 👻 已死路由和已死代码:检测已死路由和已死/不可达的代码。
  • 🏅 良好实践:缓存失效、Composer脚本、环境变量、避免全局和超全局变量等。

文档

每个可用的131个检查都有详细的文档。您可以在此处找到完整的文档。

兼容性矩阵

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

安装Enlightn OSS

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

composer require enlightn/enlightn

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

php artisan vendor:publish --tag=enlightn

注意:如果您需要安装Enlightn Pro,请访问Enlightn网站上的文档这里

运行Enlightn

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

php artisan enlightn

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

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模式下可以运行哪些分析器。因此,上述命令排除了需要完整设置才能运行的分析器(例如,使用动态分析的分析器)。

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

建立基线

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

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

php artisan enlightn:baseline

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

php artisan enlightn:baseline --ci

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

Web UI

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

Enlightn Web UI Dashboard

Web 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  \Illuminate\Console\Scheduling\Schedule  $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 Bot Review Comments

要集成Enlightn GitHub机器人,请参考文档

失败的检查

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

Enlightn Failed Check

成绩单

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

Enlightn Report Card

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

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

我应该多久运行一次Enlightn?

一个良好的实践是在每次部署代码或推送新版本时运行Enlightn。建议将Enlightn集成到您的CI/CD工具中,以便每次推送或新版本都触发它。

除了自动化的CI检查之外,您还应该定期使用上述安排的命令运行Enlightn。这将允许您监视动态分析检查,这些检查通常不包括在CI中。

展示

Laravel News     OWASP     NIST

使用Enlightn的旗舰开源项目

Laravel.io     Akaunting

操作系统兼容性

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

贡献指南

感谢您考虑为Enlightn做出贡献!贡献指南可以在这里找到。

支持策略

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

许可证

Enlightn OSS(在此GitHub仓库中)采用LGPL v3(或更高)许可证

Enlightn Pro采用商业许可证