Tinkerwell - PHP 草图板

Ward:一款 Laravel 安全扫描器

最后更新于 经过

Ward:一款用于 Laravel 镜像的安全扫描器

沃德,由……创建 贾卡尼·亚辛 是一个用 Go 语言编写的命令行安全扫描器,其设计围绕 Laravel 的结构展开。它不会对代码库进行通用的模式匹配,而是首先解析项目的结构——路由、模型、控制器、中间件、Blade 模板、配置文件、环境变量和依赖项——然后针对该上下文执行有针对性的检查。

安装

Ward 以 Go 二进制文件的形式分发,因此您需要确保已安装 Go,然后才能运行:

安装 github.com/eljakani/ward@latest
确保 $GOPATH/bin 已添加到您的 PATH 环境变量中。
出口 小路 = $PATH :$( env GOPATH)/bin"

安装完成后,运行 ward init 创造 ~/.ward/ 带有默认配置文件、按类别组织的 42 条以上内置规则,以及用于报告和扫描历史记录的目录。

扫描项目

将 Ward 指向本地目录或远程 Git 仓库:

# 本地项目
病房 扫描 /path/to/laravel-project
# 远程仓库(浅克隆)
病房 扫描 https://github.com/user/laravel-project.git

在终端中运行 Ward 时,会显示一个终端用户界面 (TUI)。扫描视图会显示管道进度和扫描器运行时的实时严重性计数。完成后,结果视图会显示一个可排序的发现结果表格,其中包含严重性徽章、类别分组以及一个详细信息面板,该面板显示描述、代码片段和修复指南。

病房 TUI 的屏幕截图
病房 TUI 的屏幕截图

它检查的内容

沃德飞船配备四个独立的扫描引擎:

  • 环境扫描器 对您的设备进行 8 项检查 .env 文件(包括生产环境中启用的调试模式)缺失或损坏 APP_KEY 以及泄露的秘密 .env.example
  • 配置扫描器 对您的设备进行 13 项检查 config/*.php 文件涵盖硬编码凭据、不安全的会话标志、CORS 通配符来源和缺失的安全选项。
  • 依赖扫描器 查询 OSV.dev 实时查询您的咨询数据库 composer.lock 用于查找存在漏洞的 Packagist 软件包。由于它查询的是实时数据而非捆绑列表,因此反映的是当前的安全公告,而不是该工具上次发布时的信息。
  • 规则扫描器 应用 42 条规则,涵盖 7 个类别:秘密(硬编码密码、API 密钥、AWS 凭证)、注入(SQL、命令、 eval ), XSS(未转义的 Blade 输出、JavaScript 注入)、调试工件( dd() , dump() , phpinfo() ),弱密码学( md5 , sha1 不安全的 RNG)、配置问题(CORS、CSRF、批量分配)和身份验证漏洞(缺少中间件、缺少速率限制)。

输出格式

配置输出格式 ~/.ward/config.yaml :

输出 :
格式 :[ json , 萨里夫 , html , 降价 ]
: ./报告
  • JSON — 机器可读结果
  • 萨里夫 — 与 GitHub 代码扫描和 IDE 集成兼容
  • 超文本标记语言 — 独立的深色主题可视化报告
  • Markdown — 适用于公关评论

CI/CD 集成

当发现的问题达到或超过指定的严重程度时,Ward 会返回非零退出代码,从而可以轻松地控制部署:

病房 扫描 - 输出 json --失败 高的

以下是项目文档中的 GitHub Actions 示例:

姓名 : 病房安全扫描
:[ , 拉取请求 ]
工作 :
安全扫描 :
连载 : Ubuntu 最新版本
步骤 :
- 用途 : 动作/结帐@v4
- 用途 : actions/setup-go@v5
:
go 版本 : '1.24'
- 姓名 : 安装 Ward
跑步 : go install github.com/eljakani/ward@latest
- 姓名 : 跑沃德
跑步 : ward init && ward scan . --输出 json
- 姓名 : 上传 SARIF
如果 : 总是()
用途 : github/codeql-action/upload-sarif@v3
:
sarif_file : 病房报告.sarif

基线管理

对于希望认可现有发现但又不抑制未来发现的团队,Ward 支持一种基线工作流程:

# 捕获当前状态
病房 扫描 - 输出 json --更新基线 .ward-baseline.json
# 在后续运行中,抑制已知的发现,仅对新的发现判定失败。
病房 扫描 - 输出 json --基线 .ward-baseline.json --失败 高的

承诺 .ward-baseline.json 将代码添加到您的存储库可以让团队跟踪哪些发现已被认可,并在持续集成中发现回归问题。

自定义规则

降低 .yaml 文件插入 ~/.ward/rules/ 定义其他检查。规则支持正则表达式或子字符串模式、文件存在性检查以及否定模式(当某些内容缺失时触发),例如,标记缺少路由的路由。 @csrf 您可以指定 PHP 文件、Blade 模板、配置文件、环境文件、路由、迁移或 JavaScript 文件。

规则 :
- ID : TEAM-001
标题 : “硬编码的内部服务 URL”
严重性 : 中等的
模式 :
- 类型 : 正则表达式
目标 : php文件
图案 : 'https?://internal-service\.\w+'

也可以禁用单个内置规则或覆盖其严重程度。 config.yaml 无需修改规则文件本身。

扫描历史记录

Ward 将每次扫描结果保存到 ~/.ward/store/ 并且在后续运行中,它会显示与先前扫描的差异——例如,“2 个新问题,3 个已解决问题 (12→11)”——以便您可以跟踪您的安全状况如何随时间变化。

访问 埃尔贾卡尼/病房 在 GitHub 上浏览源代码并开始使用。

Yannick Lyn Fatt 的照片

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

归档于:
立方体

Laravel 时事通讯

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

图像
SerpApi

适用于您的 LLM 和 AI 应用的 Web 搜索 API

访问 SerpApi
银行标志

银行

只需每月 3200 美元,即可聘请一位拥有 4-6 年经验的资深 Laravel 开发人员,为您的项目注入强劲动力。您将获得 160 小时的专属专业服务,并享受 15 天无风险试用。立即预约通话!

银行
Tinkerwell 徽标

廷克威尔

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

廷克威尔
几天内即可获得 Laravel 代码审查徽标的专家指导

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

专家级代码审查!两位拥有 10 年以上 Laravel 开发经验的开发者将为您提供清晰、实用的反馈,帮助团队构建更优质的应用程序。

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

PhpStorm

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

PhpStorm
Laravel Cloud 标志

Laravel 云

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

Laravel 云
了解 Softtech 的标志

了解软科技

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

了解软科技
Kirschbaum 标志

樱桃树

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

樱桃树
Shift 标志

转移

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

转移
鱼叉:新一代时间跟踪和发票标志

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

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

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

幸运传媒

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

幸运传媒
SaaSykit:Laravel SaaS 入门套件徽标

SaaSykit:Laravel SaaS 入门套件

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

SaaSykit:Laravel SaaS 入门套件
Ward:一款用于 Laravel 镜像的安全扫描器

Ward:一款 Laravel 安全扫描器

阅读文章
Kit:一个面向 Laravel 图像的、带有特定风格的 API 入门套件

Kit:一个面向 Laravel 的、带有明确设计思路的 API 入门套件

阅读文章
Livewire v4.2.0 发布,增强了安全性并支持 Laravel 13 镜像

Livewire v4.2.0 发布,增强了安全性并支持 Laravel 13。

阅读文章
多年来的丝状物图像

多年来的丝状物

阅读文章
Inertia v2.3.16 镜像中新增了提升指南和技能

Inertia v2.3.16 版本新增了提升指南和技能

阅读文章
Laravel 发布了面向 Laravel 和 PHP 镜像的 AI 代理技能开放目录

Laravel 发布了面向 Laravel 和 PHP 的 AI 代理技能开放目录

阅读文章