csrf laravel_csrf laravel11 如何关闭

2025-03-25 9

csrf laravel_csrf laravel11 如何关闭

在Laravel 11中,CSRF(跨站请求伪造)保护是默认启用的,这对于大多数应用程序来说是非常重要的安全措施。在某些特定场景下,你可能需要临时或永久关闭CSRF保护。简要介绍如何实现这一点,并提供几种不同的解决方案。

解决方案

最直接的方法是在VerifyCsrfToken中间件中对特定路由进行豁免。如果你确实需要完全禁用CSRF保护(不推荐),可以通过修改中间件内核来实现。接下来我们将这些方法。

一、通过豁免路由关闭CSRF

1. 豁免指定路由

编辑app/Http/Middleware/VerifyCsrfToken.php文件,在其中添加你想要豁免CSRF验证的路由。例如:

php
<?php</p>

<p>namespace AppHttpMiddleware;</p>

<p>use IlluminateFoundationHttpMiddlewareVerifyCsrfToken as Middleware;</p>

<p>class VerifyCsrfToken extends Middleware
{
    /<em>*
     * The URIs that should be excluded from CSRF verification.
     *
     * @var array
     */
    protected $except = [
        'api/no-csrf-route',
        'another-no-csrf-route/</em>', // 使用通配符可以匹配更多路径
    ];
}

这种方式允许你在保持全局CSRF保护的为特定API或页面排除CSRF验证需求。

二、全局禁用CSRF(不推荐)

2. 修改中间件内核配置

如果你想彻底禁用CSRF保护,请谨慎操作,因为这会降低应用程序的安全性。你可以通过编辑app/Http/Kernel.php文件,移除VerifyCsrfToken中间件来实现这一点:

php
protected $middlewareGroups = [
    'web' => [
        AppHttpMiddlewareEncryptCookies::class,
        IlluminateCookieMiddlewareAddQueuedCookiesToResponse::class,
        IlluminateSessionMiddlewareStartSession::class,
        IlluminateViewMiddlewareShareErrorsFromSession::class,
        // 注释掉下面这一行以禁用CSRF
        // AppHttpMiddlewareVerifyCsrfToken::class,
        IlluminateRoutingMiddlewareSubstituteBindings::class,
    ],</p>

<pre><code>'api' => [
    'throttle:api',
    IlluminateRoutingMiddlewareSubstituteBindings::class,
],

];

请注意,这样做会使你的应用暴露于CSRF攻击的风险之中,因此除非必要,否则不应采取这种做法。

三、使用CSRF令牌但不验证

3. 在表单或请求中包含令牌而不实际验证

虽然这不是严格意义上的“关闭”CSRF保护,但在某些情况下,它可能是更好的选择。你可以继续生成CSRF令牌,但不在服务器端进行验证。这样做的好处是可以保持前端代码的一致性,同时避免不必要的验证逻辑。

对于这种情况,我们仍然建议保留CSRF令牌生成机制,只是不在后端执行验证步骤。具体实现可以根据项目需求灵活调整。

在Laravel 11中关闭CSRF保护有多种方式,但从安全角度出发,尽量只对必要的部分进行豁免,而不是全面禁用。希望上述方法能帮助你根据实际情况做出合适的选择。

Image

1. 本站所有资源来源于用户上传和网络,因此不包含技术服务请大家谅解!如有侵权请邮件联系客服!cheeksyu@vip.qq.com
2. 本站不保证所提供下载的资源的准确性、安全性和完整性,资源仅供下载学习之用!如有链接无法下载、失效或广告,请联系客服处理!
3. 您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容资源!如用于商业或者非法用途,与本站无关,一切后果请用户自负!
4. 如果您也有好的资源或教程,您可以投稿发布,成功分享后有积分奖励和额外收入!
5.严禁将资源用于任何违法犯罪行为,不得违反国家法律,否则责任自负,一切法律责任与本站无关

源码下载