mcpField
L
laravel:request-forgery-protection

laravel:request-forgery-protection

github.com/jpcaparas安全15737 次安装17 周前更新
代码仓库

关于 laravel:request-forgery-protection

laravel:request-forgery-protection 是用于保护 Laravel 状态变更路由免受跨站请求伪造的安全技能,涵盖 Laravel 13 的来源验证中间件、令牌检查、Webhook 排除及测试。

主要功能

  1. 01Laravel 13 PreventRequestForgery 用法
  2. 02令牌与来源验证
  3. 03限定范围的 Webhook 排除及签名检查
  4. 04CSRF 测试建议

适用场景

  1. 01升级 Laravel 13 的防伪造中间件
  2. 02保护状态变更路由
  3. 03安全排除第三方 Webhook
  4. 04测试缺失或无效的 CSRF 令牌

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/jpcaparas/superpowers-laravel --skill laravel:request-forgery-protection

安装后在 Claude Code 中输入/laravel:request-forgery-protection确认已加载。

详细介绍

请求伪造防护

保护会更改状态的路由,避免跨站请求伪造。Laravel 13 将此机制正式命名为 PreventRequestForgery,在基于令牌的 CSRF 防护之上加入了基于来源的验证(Sec-Fetch-Site)。

命令

# Blade forms still emit tokens
<form method="POST" action="/profile">
    @csrf
    ...
</form>

# Laravel 13+: reference the new middleware class
use Illuminate\Foundation\Http\Middleware\PreventRequestForgery;   // was: VerifyCsrfToken

->withoutMiddleware([PreventRequestForgery::class]);

# Optional origin-only mode (bootstrap/app.php)
->withMiddleware(function (Middleware $middleware) {
    $middleware->preventRequestForgery(originOnly: true);
})

# Exclude webhook URIs from verification
$middleware->validateCsrfTokens(except: ['stripe/*']);

模式

  • 在表单中保留 @csrf;来源验证是附加防护,令牌回退机制可兼容旧版浏览器和 HTTP
  • 仅当所有客户端都是通过 HTTPS 访问的现代浏览器时,才启用 originOnly
  • 明确排除第三方 webhook 端点,并改为验证其签名
  • 升级到 13.x 时,将对 VerifyCsrfToken 的引用替换为 PreventRequestForgery(旧名称仍作为已弃用别名保留)
  • 切勿为了“修复”集成故障而全局禁用请求伪造防护——应按 URI 设置排除项

测试

  • 默认情况下,功能测试会绕过 CSRF;应为排除的 webhook 路由及其签名检查添加明确的测试
  • 在相关情况下,断言缺少或无效令牌时会返回 419 响应

评论

支持 Markdown