enlightn / enlightn
Enlightn - 您的性能与安全顾问,只需一键即可。
Requires
- php: ^8.0
- ext-json: *
- enlightn/security-checker: ^1.1|^2.0
- guzzlehttp/guzzle: ^7.0
- larastan/larastan: ^2.0
- laravel/framework: ^9.0|^10.0|^11.0
- nikic/php-parser: ^4.0|^5.0
- phpstan/phpstan: >=1.10.48
- phpstan/phpstan-deprecation-rules: ^1.1
- symfony/finder: ^4.0|^5.0|^6.0|^7.0
Requires (Dev)
- barryvdh/laravel-ide-helper: ^2.8|^3.0
- brianium/paratest: ^6.1|^7.0
- friendsofphp/php-cs-fixer: ^2.18|^3.0
- mockery/mockery: ^1.3
- orchestra/testbench: ^7.0|^8.0|^9.0
- phpunit/phpunit: ^9.0|^10.0
- predis/predis: *
- dev-master
- 2.x-dev
- v2.10.0
- v2.9.0
- v2.8.0
- v2.7.0
- v2.6.0
- v2.5.0
- v2.4.0
- v2.3.0
- v2.2.0
- v2.1.0
- v2.0.0
- 1.x-dev
- v1.26.0
- v1.25.0
- v1.24.0
- v1.23.0
- v1.22.1
- v1.22.0
- v1.21.0
- v1.20.0
- v1.19.0
- v1.18.0
- v1.17.0
- v1.16.0
- v1.15.1
- v1.15.0
- v1.14.0
- v1.13.0
- v1.12.0
- v1.11.0
- v1.10.0
- v1.9.0
- v1.8.0
- v1.7.1
- v1.7
- v1.6
- v1.5
- v1.4
- v1.3
- v1.2
- v1.1
- v1.0
This package is auto-updated.
Last update: 2024-09-05 11:53:38 UTC
README
一款用于提升您的应用程序性能与安全的Laravel工具
简介
将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报告。
Web UI对所有用户免费,包括以下内容
- 通过百分比统计通过率(整体和按类别)。
- 所有失败的检查以及与检查相关的代码片段(如果有)。
- 与最近在同一应用程序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机器人,请参考文档。
失败的检查
所有失败的检查都将包括失败的原因描述、相关的代码行(如果适用)以及特定检查的文档链接。
成绩单
最后,所有检查运行完成后,enlightn
Artisan命令将输出一份成绩单,其中包含有关通过、失败或跳过的检查数量和百分比的详细信息。
标记为“不适用”的检查不适用于您的特定应用程序,因此被跳过。例如,CSRF分析器不适用于无状态应用程序。
在“错误”行下报告的检查表示在分析过程中发生异常的分析器。通常,这种情况不应发生,但如果确实发生,将显示相关的错误消息,这可能与您的应用程序有关。
我应该多久运行一次Enlightn?
一个良好的实践是在每次部署代码或推送新版本时运行Enlightn。建议将Enlightn集成到您的CI/CD工具中,以便每次推送或新版本都触发它。
除了自动化的CI检查之外,您还应该定期使用上述安排的命令运行Enlightn。这将允许您监视动态分析检查,这些检查通常不包括在CI中。
展示
使用Enlightn的旗舰开源项目
操作系统兼容性
仅支持MacOS和Linux系统使用Enlightn。目前不支持Windows。
贡献指南
感谢您考虑为Enlightn做出贡献!贡献指南可以在这里找到。
支持策略
我们的支持政策可在Enlightn 文档中找到。
许可证
Enlightn OSS(在此GitHub仓库中)采用LGPL v3(或更高)许可证。
Enlightn Pro采用商业许可证。