PHP - Laravel CSRF 介绍与用法(及取消 CSRF 验证)

简介: PHP - Laravel CSRF 介绍与用法(及取消 CSRF 验证)

一、什么是 CSRF

`CSRF (Cross-site request forgery)`, 中文名称:`跨站请求伪造`。
跨站请求攻击,简单地说,是攻击者通过一些技术手段欺骗用户的浏览器去访问一个自己曾经认证过的网站并执行一些操作(如发邮件,发消息,甚至财产操作如转账和购买商品)。
由于浏览器曾经认证过,所以被访问的网站会认为是真正的用户操作而去执行。
![](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/b463eb88792d4b0a9676ffcd8a040a09~tplv-k3u1fbpfcp-watermark.image)

二、Laravel 框架如何处理 CSRF

例如:通过另外一台未授权服务器访问我们的服务器,如果是恶意攻击会很尴尬,所以可以通过去服务器获取页面回来的时候,附带一个令牌,前端显示页面之后,有访问操作的时候需要将令牌带回服务器验证比较。
  • 重点:Laravel 框架如何处理 CSRF
    定义在 routes/web.php 文件中的路由,默认就有 CSRF 验证功能
    定义在 routes/api.php 文件中的路由,默认没有 CSRF 验证功能
  • CSRF 什么时候用?什么时候不用?
    前端页面路由需要用 CSRF,接口路由不能使用 CSRF

三、Laravel 框架如何排除指定路由不进行 CSRF 验证

  • 并不是所有请求都需要避免 CSRF 攻击,比如去第三方 API 获取数据的请求。
  • 可以通过在 VerifyCsrfToken(app/Http/Middleware/ VerifyCsrfToken.php)中间件中将要排除的请求 URL 添加到 $except 属性数组中。

<?php
namespace App\Http\Middleware;
use Illuminate\Foundation\Http\Middleware\VerifyCsrfToken as Middleware;
class VerifyCsrfToken extends Middleware
{
    /**
     * Indicates whether the XSRF-TOKEN cookie should be set on the response.
     *
     * @var bool
     */
    protected $addHttpCookie = true;
    /**
     * The URIs that should be excluded from CSRF verification.
     *
     * @var array
     */
    protected $except = [
        // 把想排除的路由规则卸载此数组中
        // 把该路由的规则不进行 CSRF 验证
        '/alipay'
    ];
}
相关文章
|
5天前
|
设计模式 数据库连接 PHP
PHP中的设计模式:提升代码的可维护性与扩展性在软件开发过程中,设计模式是开发者们经常用到的工具之一。它们提供了经过验证的解决方案,可以帮助我们解决常见的软件设计问题。本文将介绍PHP中常用的设计模式,以及如何利用这些模式来提高代码的可维护性和扩展性。我们将从基础的设计模式入手,逐步深入到更复杂的应用场景。通过实际案例分析,读者可以更好地理解如何在PHP开发中应用这些设计模式,从而写出更加高效、灵活和易于维护的代码。
本文探讨了PHP中常用的设计模式及其在实际项目中的应用。内容涵盖设计模式的基本概念、分类和具体使用场景,重点介绍了单例模式、工厂模式和观察者模式等常见模式。通过具体的代码示例,展示了如何在PHP项目中有效利用设计模式来提升代码的可维护性和扩展性。文章还讨论了设计模式的选择原则和注意事项,帮助开发者在不同情境下做出最佳决策。
|
1天前
|
存储 前端开发 PHP
深入浅出PHP框架之Laravel的优雅
【9月更文挑战第31天】在编程世界里,PHP语言如同一位多才多艺的老匠人,而Laravel框架则是其手中的精工细作。本文将带你领略Laravel的魅力所在,从其优雅的设计哲学到实用的功能特性,再到如何通过实际代码示例掌握它的核心操作。让我们一起探索Laravel的世界,发现编程之美。
|
2月前
|
缓存 安全 PHP
深入浅出PHP框架:Laravel的优雅之旅
【8月更文挑战第15天】 探索PHP世界里的瑰宝,Laravel框架以其优雅、简洁著称。本文将带你领略Laravel的核心魅力,从安装到构建应用,再到高级特性的应用,让你轻松驾驭这个强大的工具。无论你是PHP新手还是资深开发者,这篇文章都将成为你理解并使用Laravel的指南针。
|
2月前
|
前端开发 中间件 PHP
|
2月前
|
缓存 中间件 PHP
Laravel 框架:优雅 PHP Web 开发的典范
【8月更文挑战第31天】
48 0
|
2月前
|
安全 Java 云计算
JSF 应用究竟何去何从?云端部署能否成为其全新突破点?快来一探究竟!
【8月更文挑战第31天】本文介绍了将JavaServer Faces(JSF)应用部署到云平台的过程。首先,根据成本、功能、可靠性和安全性选择合适的云平台。接着,展示了构建简单JSF应用的示例代码。最后,以AWS Elastic Beanstalk为例,详细说明了部署流程。部署至云端可提升应用的可用性、扩展性和安全性。
32 0
|
2月前
|
安全 前端开发 PHP
构建与验证表单:传统PHP与Laravel框架的比较分析——探索Web开发中表单处理的优化策略和最佳实践
【8月更文挑战第31天】在 Web 开发中,表单构建与数据验证至关重要。传统 PHP 方法需手动处理 HTML 表单和数据验证,而 Laravel 框架则提供了一种更现代、高效的解决方案。本文通过对比传统 PHP 和 Laravel 的方法,探讨表单构建与验证的最佳实践。Laravel 通过简洁的语法糖、内置的数据过滤和验证机制,显著提升了代码的安全性和可维护性,适用于大型项目或需要快速开发的场景。然而,在追求灵活性的小型项目中,直接使用 PHP 仍是不错的选择。了解两者的优劣,有助于开发者根据项目需求做出最佳决策。
29 0
|
2月前
|
缓存 前端开发 API
PHP现代化之路:从传统到Laravel的演进
【8月更文挑战第4天】 在数字化浪潮不断推进的今天,PHP作为一门历史悠久的编程语言,面临着前所未有的挑战与机遇。本文将探讨PHP如何通过现代化改造,特别是Laravel框架的应用,实现从传统Web开发向现代应用架构的转变,并分析这一转变对开发者和项目带来的影响。
|
2月前
|
安全 中间件 网络安全
深入浅出PHP框架之Laravel的优雅云计算与网络安全:探索云服务、网络安全和信息安全的技术领域
【8月更文挑战第29天】在编程的世界里,PHP以其灵活性和易用性广受欢迎。本文将深入探讨PHP的一个流行框架——Laravel,揭示它如何以简洁、高雅的解决方案满足复杂的开发需求。我们将一起走进Laravel的世界,探索其背后的哲学,以及它如何让代码变得更加动人和富有韵律。
|
2月前
|
存储 关系型数据库 Linux
【Azure 应用服务】App Service For Linux 部署PHP Laravel 项目,如何修改首页路径为 wwwroot\public\index.php
【Azure 应用服务】App Service For Linux 部署PHP Laravel 项目,如何修改首页路径为 wwwroot\public\index.php
下一篇
无影云桌面