Heim > PHP-Framework > Laravel > So verwenden Sie die Laravel-Middleware, um Ihre Anwendung zu sichern

So verwenden Sie die Laravel-Middleware, um Ihre Anwendung zu sichern

WBOY
Freigeben: 2023-11-03 12:52:54
Original
1013 Leute haben es durchsucht

So verwenden Sie die Laravel-Middleware, um Ihre Anwendung zu sichern

Da Webanwendungen immer komplexer werden, wird es immer wichtiger, die Sicherheit Ihrer Anwendungen zu schützen. Middleware in Laravel bietet eine einfache und nützliche Möglichkeit, Ihre Anwendung vor böswilligen Angriffen zu schützen und gleichzeitig die Sicherheit Ihrer Anwendung zu erhöhen. In diesem Artikel wird erläutert, wie Sie Middleware in Laravel verwenden, um Ihre Anwendung zu sichern, und es werden spezifische Codebeispiele bereitgestellt.

Was ist Middleware?

Middleware ist Code, der zwischen Anfragen und Antworten ausgeführt wird. Mit Middleware können Sie Anfragen zwischen Routern und Controllern transparent filtern. Sie können benutzerdefinierte Middleware erstellen und diese mit dem Router oder Controller Ihrer Anwendung verknüpfen.

Middleware soll die folgenden Probleme lösen:

  • Authentifizierung: Stellen Sie sicher, dass der Benutzer authentifiziert ist und die Berechtigung zum Zugriff auf die Anwendung hat.
  • Autorisierung: Stellen Sie fest, ob der Benutzer/die Rolle berechtigt ist, die angeforderte Aktion auszuführen.
  • Protokollierung: Zeichnen Sie wichtige Informationen aus Anfragen und Antworten zum Debuggen oder zur Sicherheitsüberprüfung auf.
  • Caching: Anfragen und Antworten zwischenspeichern, um die Leistung zu verbessern.
  • Datenübertragung: Daten von Anfragen und Antworten konvertieren/formatieren.
  • Sicherheit: Stellen Sie sicher, dass Anwendungen vor Cross-Site Request Forgery (CSRF), Cross-Site Scripting (XSS) und anderen Sicherheitslücken geschützt sind.

Wie erstellt man Middleware?

Das Erstellen von Middleware in Laravel ist sehr einfach. Hier sind die Schritte zum Erstellen von Middleware:

  1. Erstellen Sie eine Middleware-Klasse.

Zuerst müssen Sie eine Middleware-Klasse erstellen. Sie können den Artisan-Befehl verwenden, um eine Vorlage für die Middleware zu erstellen:

php artisan make:middleware MiddlewareName
Nach dem Login kopieren
  1. Middleware konfigurieren

Sobald die Middleware-Klasse erstellt wurde, müssen Sie die Middleware im HTTP-Kernel Ihrer Anwendung registrieren. Diese Datei befindet sich im Verzeichnis /app/Http. Fügen Sie Ihre Middleware zum $middleware-Array hinzu.

  1. Middleware in Routern/Controllern verwenden

Schließlich können Sie Ihre benutzerdefinierte Middleware an den Router oder Controller Ihrer Anwendung anschließen. Mit der Middleware-Methode können Sie Middleware zu Ihrem Router/Controller hinzufügen. Zum Beispiel:

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

Dadurch durchläuft die Anfrage zuerst die Middleware, bevor sie den Controller erreicht.

Sichern Ihrer Anwendung

Da wir nun wissen, wie man Middleware erstellt, wollen wir uns damit befassen, wie Sie damit Ihre Anwendung schützen können.

  1. CSRF

CSRF-Angriff bezieht sich auf eine Angriffsmethode, bei der der Angreifer die Anmeldeinformationen des Opfers (Cookie oder Sitzung) verwendet, um in seinem Namen einen Vorgang abzuschließen. Nicht validierte Anfragen können leicht zu Sicherheitslücken führen. Diese Probleme können mithilfe des integrierten CSRF-Schutzes von Laravel leicht vermieden werden.

In Ihrer Anwendung können Sie den CSRF-Schutz im HTTP-Kern der Anwendung aktivieren. Normalerweise tun Sie Folgendes:

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

Cross-Site-Scripting (XSS) ist ein Angriff, bei dem ein Angreifer bösartigen JavaScript-Code im Browser des Opfers ausführt. Dies kann zur Offenlegung von Informationen, zur Einschleusung von Schadcode und zu anderen Sicherheitslücken führen. Middleware in Laravel kann Ihnen dabei helfen, den durch XSS-Angriffe verursachten Schaden zu mindern.

In Laravel können Sie HtmlPurifier oder andere Pakete von Drittanbietern verwenden, um Ihre Eingabedaten zu filtern. Hier ist ein Beispiel:

//在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;
    }
}
Nach dem Login kopieren
  1. Autorisierung

Autorisierung kann Ihnen dabei helfen, festzustellen, ob der Benutzer/die Rolle berechtigt ist, die angeforderte Aktion auszuführen. Die integrierte Autorisierung von Laravel macht dies einfach.

Zuerst müssen Sie die Autorisierungsrichtlinienklasse erstellen. Verwenden Sie den Artisan-Befehl, um eine Vorlage für diese Klasse zu generieren:

php artisan make:policy PostPolicy --model=Post
Nach dem Login kopieren

Dadurch wird eine neue PostPolicy-Klasse im Verzeichnis /app/Policies Ihrer Anwendung erstellt.

Sie müssen in Ihrem Antrag auch die Autorisierungsrichtlinie beim Dienstanbieter registrieren. Definieren Sie die Autorisierungsrichtlinie im AuthServiceProvider Ihrer Anwendung:

// 在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();
    }
}
Nach dem Login kopieren

Als Nächstes müssen Sie die Autorisierungsmethode von Laravel in Ihrem Controller verwenden, um zu überprüfen, ob der Benutzer die Berechtigung zum Ausführen der angeforderten Aktion hat. Beispiel:

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

Nach der Autorisierung können nur Benutzer/Rollen, die gemäß der Autorisierungsrichtlinie zugelassen sind, die Ansicht „posts.update“ anzeigen.

Zusammenfassung

Middleware in Laravel ist ein leistungsstarkes Sicherheitstool, das Entwicklern dabei helfen kann, Anwendungen schnell und einfach vor CSRF, XSS und anderen Sicherheitslücken zu schützen. Dieser Artikel enthält konkrete Codebeispiele, die zeigen, wie Sie Middleware zum Schutz Ihrer Anwendung verwenden. Wenn Sie noch nicht damit begonnen haben, Middleware zum Schutz Ihrer Anwendungen zu verwenden, ist es jetzt an der Zeit, damit zu beginnen.

Das obige ist der detaillierte Inhalt vonSo verwenden Sie die Laravel-Middleware, um Ihre Anwendung zu sichern. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage