Laravel中如何配置表单安全令牌以避免CSRF攻击?
- 内容介绍
- 文章标签
- 相关推荐
本文共计1195个文字,预计阅读时间需要5分钟。
由于 Laravel 默认启用全局 CSRF 保护,所有使用 POST、PUT、PATCH、DELETE 等请求方法的数据提交都需要携带有效的 CSRF token。如果中间件 VerifyCsrfToken 检测到没有有效的 CSRF token,将直接返回 419 页面。这不是配置漏洞,而是框架的安全策略默认行为。
常见错误现象:
• 提交自定义 HTML 表单(没用 Blade)时 419
• AJAX 请求没带 X-CSRF-TOKEN 头,返回 419 或 403
• 在 Vue/React 单页应用中复用 Laravel 后端,token 过期或未刷新
- Blade 模板里必须写
@csrf(它会生成隐藏 input:<input type="hidden" name="_token" value="...">) - AJAX 请求需从
<meta name="csrf-token" content="...">读取值,并设请求头X-CSRF-TOKEN - 不要手动拼接
_token值——session 中的 token 是绑定 session ID 的,硬编码会失效
VerifyCsrfToken 中间件怎么排除特定路由
有些接口本就不该走 CSRF 校验,比如 Webhook 接收地址、API 端点(尤其用 API Token 或 JWT 认证时)。Laravel 允许白名单排除,但得小心路径匹配逻辑。
本文共计1195个文字,预计阅读时间需要5分钟。
由于 Laravel 默认启用全局 CSRF 保护,所有使用 POST、PUT、PATCH、DELETE 等请求方法的数据提交都需要携带有效的 CSRF token。如果中间件 VerifyCsrfToken 检测到没有有效的 CSRF token,将直接返回 419 页面。这不是配置漏洞,而是框架的安全策略默认行为。
常见错误现象:
• 提交自定义 HTML 表单(没用 Blade)时 419
• AJAX 请求没带 X-CSRF-TOKEN 头,返回 419 或 403
• 在 Vue/React 单页应用中复用 Laravel 后端,token 过期或未刷新
- Blade 模板里必须写
@csrf(它会生成隐藏 input:<input type="hidden" name="_token" value="...">) - AJAX 请求需从
<meta name="csrf-token" content="...">读取值,并设请求头X-CSRF-TOKEN - 不要手动拼接
_token值——session 中的 token 是绑定 session ID 的,硬编码会失效
VerifyCsrfToken 中间件怎么排除特定路由
有些接口本就不该走 CSRF 校验,比如 Webhook 接收地址、API 端点(尤其用 API Token 或 JWT 认证时)。Laravel 允许白名单排除,但得小心路径匹配逻辑。

