>백엔드 개발 >PHP 튜토리얼 >Laravel 미들웨어: CSRF(교차 사이트 요청 위조) 공격을 방지하는 데 사용됩니다.

Laravel 미들웨어: CSRF(교차 사이트 요청 위조) 공격을 방지하는 데 사용됩니다.

WBOY
WBOY원래의
2023-07-30 16:27:29835검색

Laravel 미들웨어: CSRF(교차 사이트 요청 위조) 공격을 방지하는 데 사용됩니다.

개요:
인터넷 애플리케이션에서 CSRF(교차 사이트 요청 위조) 공격은 일반적인 네트워크 보안 위협입니다. CSRF 공격은 악의적인 요청을 위조하여 사용자가 자신도 모르게 비밀번호 변경, 자금 이체 등 불법적인 작업을 수행할 수 있도록 합니다. 이러한 종류의 공격을 방지하기 위해 Laravel은 CSRF 공격으로부터 애플리케이션을 쉽게 보호할 수 있는 내장 미들웨어를 제공합니다.

CSRF 미들웨어 사용법:
Laravel에서는 CSRF 미들웨어를 사용하는 것이 매우 간단합니다. 먼저 애플리케이션의 라우팅 파일에 미들웨어를 등록해야 합니다. 아래와 같이 app/Http/Kernel.php 파일을 열고 web 미들웨어 그룹을 찾은 다음 여기에 VerifyCsrfToken 미들웨어를 추가합니다. app/Http/Kernel.php文件,找到web中间件组,并在其中添加VerifyCsrfToken中间件,如下所示:

protected $middlewareGroups = [
    'web' => [
        // 其他中间件...
        AppHttpMiddlewareVerifyCsrfToken::class,
    ],
    // 其他中间件组...
];

当注册了该中间件后,Laravel会自动为每个请求生成一个token,并将其存储在session中。每次发送POST、PUT、DELETE请求时,Laravel会比对请求中的token和存储在session中的token是否一致,如果不一致,则会拒绝请求并返回一个错误。

生成CSRF token:
Laravel提供了一个全局的csrf_token辅助函数,用于在视图中生成一个CSRF token。在HTML表单中,我们可以通过在ff9c23ada1bcecdd1a0fb5d5a0f18437标签中添加一个隐藏的输入域,并将该输入域的值设置为CSRF token,来保护该表单免受CSRF攻击。

<form method="POST" action="/submit">
    @csrf
    <!-- 其他表单字段... -->
    <button type="submit">提交</button>
</form>

在上面的示例中,我们使用了@csrf指令来生成隐藏的CSRF token输入域。该指令会自动在生成的HTML中插入一个隐藏的d5fd7aea971a85678ba271703566ebfd标签,其名称为_token,值为CSRF token。

如果你使用Laravel内置的表单辅助函数(如Form::open),则不需要手动添加CSRF token输入域,Laravel会自动为你生成。

手动验证CSRF token:
除了自动验证之外,Laravel也提供了手动验证CSRF token的方法,以便我们在控制器或路由回调中完成更细粒度的验证。我们可以使用csrf_token辅助函数来获取当前请求的CSRF token,并通过调用Request对象的session方法来获取存储在session中的token。

下面是一个在控制器中手动验证CSRF token的示例:

<?php

namespace AppHttpControllers;

use IlluminateHttpRequest;
use IlluminateSupportFacadesSession;

class UserController extends Controller
{
    public function updateProfile(Request $request)
    {
        $token = $request->input('_token');
        if (!hash_equals(Session::token(), $token)) {
            // CSRF token验证失败
            abort(403, 'Unauthorized action.');
        }

        // CSRF token验证通过,继续处理操作
        // ...
    }
}

在上述示例中,我们使用了hash_equals rrreee

미들웨어가 등록되면 Laravel은 각 요청에 대해 자동으로 토큰을 생성하여 세션에 저장합니다. POST, PUT 또는 DELETE 요청이 전송될 때마다 Laravel은 요청의 토큰과 세션에 저장된 토큰을 비교하여 일치하지 않는지 확인합니다. 요청이 거부되고 오류가 발생합니다. 돌아왔다.


CSRF 토큰 생성:

Laravel은 뷰에서 CSRF 토큰을 생성하기 위한 전역 csrf_token 도우미 함수를 제공합니다. HTML 양식에서는 ff9c23ada1bcecdd1a0fb5d5a0f18437 태그에 숨겨진 입력 필드를 추가하고 입력 필드의 값을 CSRF 토큰으로 설정하여 CSRF 공격으로부터 양식을 보호할 수 있습니다. 🎜rrreee🎜위의 예에서는 @csrf 지시문을 사용하여 숨겨진 CSRF 토큰 입력 필드를 생성했습니다. 이 명령은 이름이 _token이고 값이 CSRF 토큰인 숨겨진 d5fd7aea971a85678ba271703566ebfd 태그를 생성된 HTML에 자동으로 삽입합니다. 🎜🎜Laravel에 내장된 양식 도우미 기능(예: Form::open)을 사용하는 경우 CSRF 토큰 입력 필드를 수동으로 추가할 필요가 없으며 Laravel이 자동으로 생성합니다. 🎜🎜CSRF 토큰 수동 확인: 🎜자동 확인 외에도 Laravel은 CSRF 토큰을 수동으로 확인하는 방법을 제공하므로 컨트롤러 또는 라우팅 콜백에서 보다 세부적인 확인을 완료할 수 있습니다. csrf_token 도우미 함수를 사용하여 현재 요청의 CSRF 토큰을 얻을 수 있고, 요청를 호출하여 세션에 저장된 session 메서드를 얻을 수 있습니다. > 객체. 🎜🎜다음은 컨트롤러에서 CSRF 토큰을 수동으로 확인하는 예입니다. 🎜rrreee🎜위 예에서는 hash_equals 함수를 사용하여 요청의 토큰이 다음의 토큰과 일치하는지 비교했습니다. 세션에서 CSRF 토큰 확인의 보안을 보장합니다. 🎜🎜요약: 🎜Laravel의 CSRF 미들웨어는 교차 사이트 요청 위조 공격을 방지하는 간단하면서도 강력한 방법을 제공합니다. CSRF 토큰을 자동으로 생성하고 검증함으로써 악의적인 요청으로부터 애플리케이션을 효과적으로 보호할 수 있습니다. 자동 확인이든 수동 확인이든 Laravel은 애플리케이션 보안을 위한 유연하고 안정적인 옵션을 제공합니다. 🎜

위 내용은 Laravel 미들웨어: CSRF(교차 사이트 요청 위조) 공격을 방지하는 데 사용됩니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.