ホームページ  >  記事  >  PHPフレームワーク  >  Laravel ミドルウェアを使用してアプリケーションを保護する方法

Laravel ミドルウェアを使用してアプリケーションを保護する方法

WBOY
WBOYオリジナル
2023-11-03 12:52:54975ブラウズ

Laravel ミドルウェアを使用してアプリケーションを保護する方法

Web アプリケーションが複雑になるにつれて、アプリケーションのセキュリティを確保することがますます重要になります。 Laravel のミドルウェアは、アプリケーションのセキュリティを強化しながら、悪意のある攻撃からアプリケーションを保護するためのシンプルで便利な方法を提供します。この記事では、Laravel でミドルウェアを使用してアプリケーションを保護する方法を説明し、具体的なコード例を示します。

ミドルウェアとは何ですか?

ミドルウェアは、リクエストとレスポンスの間に実行されるコードです。ミドルウェアを使用すると、ルーターとコントローラーの間でリクエストを透過的にフィルタリングできます。カスタム ミドルウェアを作成し、アプリケーションのルーターまたはコントローラーにリンクできます。

ミドルウェアは、次の問題を解決するように設計されています。

  • 認証: ユーザーが認証されており、アプリケーションにアクセスする権限があることを確認します。
  • Authorization: ユーザー/ロールに、要求されたアクションを実行する権限があるかどうかを判断します。
  • ロギング: デバッグまたはセキュリティ監査のために、リクエストとレスポンスの重要な情報を記録します。
  • キャッシュ: リクエストとレスポンスをキャッシュしてパフォーマンスを向上させます。
  • データ転送: リクエストとレスポンスのデータを変換/フォーマットします。
  • セキュリティ: クロスサイト リクエスト フォージェリ (CSRF)、クロスサイト スクリプティング (XSS)、およびその他のセキュリティ脆弱性からアプリケーションが保護されていることを確認します。

ミドルウェアを作成するにはどうすればよいですか?

Laravel でミドルウェアを作成するのは非常に簡単です。ミドルウェアを作成する手順は次のとおりです。

  1. ミドルウェア クラスの作成

まず、ミドルウェア クラスを作成する必要があります。アーティザン コマンドを使用してミドルウェアのテンプレートを作成できます。

php artisan make:middleware MiddlewareName
  1. ミドルウェアの構成

ミドルウェア クラスを作成したら、それを HTTP カーネルで構成する必要があります。アプリケーション ミドルウェアを登録します。このファイルは /app/Http ディレクトリにあります。ミドルウェアを $middleware 配列に追加します。

  1. ルーター/コントローラーでのミドルウェアの使用

最後に、カスタム ミドルウェアをアプリケーションのルーターまたはコントローラーに接続できます。ミドルウェア方式を使用して、ルーター/コントローラーにミドルウェアを追加できます。例:

Route::get('/path', 'Controller@action')
                    ->middleware('middlewareName');

これにより、リクエストはコントローラーに到達する前にミドルウェアを通過します。

アプリケーションの保護

ミドルウェアの作成方法を理解したところで、それを使用してアプリケーションを保護する方法を見てみましょう。

  1. CSRF

CSRF 攻撃とは、攻撃者が被害者のログイン資格情報 (Cookie またはセッション) を使用して、被害者に代わって操作を完了する攻撃方法を指します。未検証のリクエストは、簡単にセキュリティ上の脆弱性につながる可能性があります。これらの問題は、Laravel の組み込み CSRF 保護を使用して簡単に回避できます。

アプリケーションでは、アプリケーションの HTTP コアで CSRF 保護を有効にすることができます。

// 在Http/Kernel.php文件中
class Kernel extends HttpKernel
{
    protected $middleware = [
        IlluminateFoundationHttpMiddlewareCheckForMaintenanceMode::class,
        IlluminateFoundationHttpMiddlewareValidatePostSize::class,
        AppHttpMiddlewareTrimStrings::class,
        IlluminateFoundationHttpMiddlewareConvertEmptyStringsToNull::class,
        IlluminateSessionMiddlewareStartSession::class,
        IlluminateViewMiddlewareShareErrorsFromSession::class,
        AppHttpMiddlewareVerifyCsrfToken::class,
    ];
}
  1. XSS

クロスサイト スクリプティング攻撃 (XSS) とは、攻撃者が被害者のブラウザ上で悪意のある JavaScript コードを実行する攻撃方法です。 。これにより、情報漏洩、悪意のあるコードの挿入、その他のセキュリティ上の脆弱性が発生する可能性があります。 Laravel のミドルウェアは、XSS 攻撃による被害を軽減するのに役立ちます。

Laravel では、HtmlPurifier またはその他のサードパーティ パッケージを使用して入力データをフィルタリングできます。以下に例を示します。

//在app/Http/Middleware/HtmlPurifier.php文件中
namespace AppHttpMiddleware;

use Closure;
use HTMLPurifier;

class HtmlPurifier
{
    public function handle($request, Closure $next)
    {
        $input = $this->purify($request->input());
        $request->merge($input);
        return $next($request);
    }

    protected function purify(array $input)
    {
        $config = HTMLPurifier_Config::createDefault();
        $purifier = new HTMLPurifier($config);
        foreach ($input as $key => $value) {
            $input[$key] = $purifier->purify($value);
        }
        return $input;
    }
}
  1. Authorization

Authorization は、ユーザー/ロールに要求されたアクションを実行する権限があるかどうかを判断するのに役立ちます。 Laravel の組み込み承認により、これが簡単になります。

まず、認可ポリシー クラスを作成する必要があります。 Artisan コマンドを使用して、このクラスのテンプレートを生成します。

php artisan make:policy PostPolicy --model=Post

これにより、アプリケーションの /app/Policies ディレクトリに新しい PostPolicy クラスが作成されます。

また、アプリケーション内のサービス プロバイダーに認可ポリシーを登録する必要があります。アプリケーションの AuthServiceProvider で承認ポリシーを定義します。

// 在app/Providers/AuthServiceProvider.php文件中
namespace AppProviders;

use AppPost;
use AppPoliciesPostPolicy;
use IlluminateSupportFacadesGate;
use IlluminateFoundationSupportProvidersAuthServiceProvider as ServiceProvider;

class AuthServiceProvider extends ServiceProvider
{
    protected $policies = [
        Post::class => PostPolicy::class,
    ];

    // 注册策略
    public function boot()
    {
        $this->registerPolicies();
    }
}

次に、コントローラーで Laravel の authorize メソッドを使用して、要求されたアクションを実行する権限がユーザーにあることを確認する必要があります。例:

public function update(Request $request, Post $post)
{
    $this->authorize('update', $post);
    // 只有具备操作权限的用户才能看到以下内容
    return view('posts.update', [
        'post' => $post
    ]);
}

認可後は、認可ポリシーによって許可されたユーザー/ロールのみがposts.updateビューを表示できます。

概要

Laravel のミドルウェアは、開発者が CSRF、XSS、その他のセキュリティ脆弱性からアプリケーションを迅速かつ簡単に保護できる強力なセキュリティ ツールです。この記事では、ミドルウェアを使用してアプリケーションを保護する方法を示す具体的なコード例を示します。アプリケーションを保護するためにミドルウェアの使用をまだ開始していない場合は、今すぐに開始してください。

以上がLaravel ミドルウェアを使用してアプリケーションを保護する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。