Skip to main content

5 Tipps zum Absichern von PHP Laravel

Artikel von
Headshot of DeveloperSteve Coochin

DeveloperSteve Coochin

feature laravel tips

21. April 2022

0 Min. Lesezeit

Laravel für Entwickler wird oft als „das PHP-Framework für Web-Künstler“ bezeichnet. Es ist eines der meistgenutzten Frameworks im PHP-Ökosystem und verfügt über eine große Community sowie zahlreiche Unterprojekte für die Entwicklung verschiedenster Anwendungen.

Seit dem Start von Version 1.0 im Jahr 2011 betreibt Laravel die Websites globaler Unternehmen wie 9GAG, BBC und Pfizer. Das Hauptprojekt ist im Laufe der Jahre stark gewachsen und in verschiedene Komponenten aufgeteilt worden, die für Websites und Plattformen gleichermaßen umfassend genutzt werden:

  • Laravel/core – Dies ist der zentrale Anlaufpunkt für einen Großteil der Community und der empfohlene Einstieg für alle, die mit Laravel loslegen möchten. Das Projekt enthält alles, was Sie benötigen, um schnell eine Website einzurichten, einschließlich leicht verständlicher Tutorials und Dokumentation. PHP Composer verzeichnet für Laravel/core im Schnitt mehr als 16.000 Installationen innerhalb von 24 Stunden.

  • Laravel/framework – Dieses Framework stellt die Kernfunktionen von Laravel bereit und wird von vielen anderen Projekten als Abhängigkeit genutzt. Seit der Aufnahme in PHP Composer im Jahr 2013 wurde es mehr als 183 Millionen Mal installiert und kommt auf durchschnittlich mehr als 86.000 Installationen pro Tag. Es wird von über einer Million Open-Source-Plattformen und -Produkten als Abhängigkeit verwendet.

  • Laravel Sails – Dieses Projekt basiert auf einer schlanken CLI, die speziell für die Laravel-Standardentwicklungsumgebung mit Docker entwickelt wurde. Sails ermöglicht die Entwicklung von Anwendungen mit Laravel in Containern – für mehr Geschwindigkeit und Skalierbarkeit.

Erste Schritte mit PHP Laravel

Mit Laravel ist der Einstieg schnell und einfach, insbesondere mit PHPs Paketmanager PHP Composer. Ein neues Projekt lässt sich ganz einfach über die Befehlszeile mit composer create-project Laravel/Laravel example-app starten. Anschließend können Sie den in das Laravel-Framework integrierten Server verwenden: Wechseln Sie mit cd example-app in das neu erstellte Verzeichnis und führen Sie dann php artisan serve aus. Dadurch wird ein lokaler Server gestartet, der standardmäßig unter 127.0.0.1:8000 erreichbar ist.

Dunkle Laravel-Startseite mit dem Laravel-Logo und Links zu Dokumentation, Laracasts, Laravel News und Vibrant Ecosystem.

Was ich an Laravel besonders schätze, ist der konsequente Fokus auf Entwickler: Häufig benötigte Tools sind bereits integriert. Laravel kann über die Befehlszeile automatisch ein neues Git-Repository erstellen. Verwenden Sie dazu das --git flag; mit dem --branch="main"-Flag können Sie sogar einen Branch angeben.

Die 5 besten Möglichkeiten, Laravel abzusichern

Sehen wir uns einige Möglichkeiten an, wie Sie Ihre Laravel-Installationen absichern und Ihre Nutzer schützen können.

1. Framework-Konfiguration

Die richtige und frühzeitige Konfiguration für die verschiedenen Phasen der Anwendungsentwicklung ist für jedes Projekt entscheidend. Mit Laravel können Sie Entwicklungs- und Produktionskonfigurationen in der .env-Datei festlegen. Diese Datei enthält Konfigurationsinformationen für die Anwendung und darf daher niemals öffentlich zugänglich sein.

Stellen Sie in der Produktionsumgebung sicher, dass der Debug-Modus deaktiviert ist. Setzen Sie dazu APP_DEBUG auf false. Während der Entwicklung ist der Debug-Modus hilfreich. In der Produktionsumgebung verhindert seine Deaktivierung jedoch, dass unerwünschte Fehlermeldungen, Pfade oder kritische Systeminformationen öffentlich sichtbar sind.

Wichtig ist außerdem, dass für Ihre Laravel-Installation ein Anwendungsschlüssel generiert wurde. Er wird für die symmetrische Verschlüsselung von Cookies, signierte Sitzungs-URLs und Passwortrücksetzungstoken verwendet. Generieren Sie den Schlüssel in der Regel über den Artisan-Befehl key:generate (oder php artisan key:generate, je nach Laravel-Konfiguration).

2. SQL-Injection verhindern

Einer der größten Vorteile von Laravel ist der Einsatz des Eloquent-ORM im Kern-Framework. Dieses verwendet PDO-Bindings, um bei der Interaktion mit der verbundenen Datenbank vor SQL-Injection zu schützen.

Ein ORM ist eine Software, die die Arbeit mit Datenbankeinträgen erleichtert, indem sie Daten als Objekte darstellt. Es bildet eine Abstraktionsschicht über der Datenbank-Engine, in der die Daten einer Anwendung gespeichert werden.

Als zusätzliche Schutzschicht neben Eloquent kann insbesondere bei der Verarbeitung von Nutzereingaben die PHP-Kernfunktionalität für weitere Bereinigung sorgen. Zusätzliche Bereinigung schadet nie – es sei denn, sie beeinträchtigt Ladezeiten und Leistung. Weitere Informationen finden Sie in unserem Beitrag zu den 5 besten Möglichkeiten, SQL-Injection mit PHP zu verhindern.

3. Cookies und Sitzungsverwaltung

Der Schutz von Nutzersitzungen und Cookies trägt wesentlich dazu bei, die Daten von Endnutzern so sicher wie möglich aufzubewahren. Bei der Verwaltung dieser Daten in Laravel sollten Sie einige Punkte beachten.

Aktivieren Sie HttpOnly für die Laravel-Sitzung Ihrer Anwendung. Das können Sie in der Datei config/session.php einstellen. Damit schaffen Sie eine zusätzliche Sicherheitsebene und verhindern, dass JavaScript auf Sitzungscookies zugreifen kann. Legen Sie außerdem eine kurze Leerlaufzeit für Sitzungen fest, damit Nutzer bei Inaktivität automatisch abgemeldet werden.

Die Konfiguration der Cookie-Domain befindet sich ebenfalls in der Datei config.session.php. Sie sollte auf Null gesetzt sein, sofern Sie keine Subdomains verwenden. Durch das Festlegen des Cookie-Domain-Attributs wird same origin erzwungen, sodass nur die Basisdomain das Cookie setzen kann. Außerdem empfiehlt es sich, das Cookie-Attribut SameSite auf lax oder strict zu setzen, um Cookies auf Erstanbieter- oder dieselbe Website zu beschränken.

Die wichtigste Konfigurationsoption in der Datei config/session.php ist HTTPS only. Wenn Sie diese Option aktivieren, schützen Sie sich vor MITM-Angriffen (Man-in-the-Middle) und stellen sicher, dass nur sichere HTTPS-URLs zulässig sind.

4. Uploads sicher verarbeiten

Validieren Sie den Dateityp immer mithilfe von MimeTypes:

$request->validate([
    'photo' => 'file|size:100|mimes:jpg,bmp,png'
]);

Zusätzlich:

  • Verlassen Sie sich nicht darauf, dass Nutzer Pfade oder Dateinamen korrekt eingeben. Verwenden Sie immer Hash-Zeichenfolgen oder vom System generierte Namen.

  • Vermeiden Sie XML-Dateien und ZIP-Archive, wenn möglich, oder verarbeiten Sie sie auf sichere Weise.

  • Verwenden Sie basename(), um unerwünschte Pfad-Traversal-Angriffe zu verhindern.

5. SAST- und SCA-Tools verwenden

Diese Tools helfen, Ihren Code und die Verwendung von Open-Source-Paketen bestmöglich abzusichern, indem sie Code und Paketmanifeste scannen. Noch wichtiger: Sie ermöglichen kontinuierliche Scans, sodass Sie benachrichtigt werden, wenn eine bestimmte Paketversion eine erkannte Schwachstelle enthält.

Lesen Sie unseren Leitfaden zum kombinierten Einsatz von SAST und SCA, um Ihr Projekt besser abzusichern.

Software Composition Analysis (SCA)

SCA-Tools wie Snyk Open Source sind besonders nützlich, wenn Sie Open-Source-Paketmanager wie PHP Composer verwenden. Ein SCA-Tool kann das Composer-Manifest scannen und bestimmte Versionen von Open-Source-Paketen auf bekannte potenzielle Schwachstellen prüfen.

Snyk-Schwachstellendatenbank mit einem Eintrag zu einer kritischen Command-Injection-Schwachstelle in Laravel/framework-Versionen unter 5.8.17.
Snyk Open Souce priorisiert Schwachstellen, damit Sie kritische Probleme schneller bearbeiten können.

Ein gutes SCA-Tool scannt Ihre Projekte, Open-Source-Bibliotheken und Abhängigkeiten kontinuierlich auf Schwachstellen. Jahr für Jahr beobachten wir, dass in verschiedenen Ökosystemen immer mehr neue anfällige Codepfade auftreten. Durch frühzeitige Erkennung können Sie auf neu entdeckte Bedrohungen aufmerksam gemacht werden, wie etwa die jüngste Schwachstelle in PHP dompdf. 

Statische Anwendungssicherheitstests (SAST)

SAST-Tools wie Snyk Code helfen dabei, potenzielle Schwachstellen in einer Codebasis zu erkennen. So können Sie die identifizierten Codebereiche genauer untersuchen.

Der Snyk-Code-Scan für PHP ist besonders hilfreich: Er hebt nicht nur problematische Bereiche hervor, sondern hilft Ihnen auch, Funktionen, Objekten und Frameworks zurückzuverfolgen und sie genauer zu untersuchen.

Datenflussansicht in Snyk Code, die unsicheres MD5-Hashing im Code von Laravel Filesystem.php hervorhebt.
Die Datenflussansicht in Snyk Code hebt potenziell unsichere Bereiche in Ihrem Code hervor.

Anhand praxisnaher Beispiele der jeweiligen Schwachstelle schlägt Snyk Code außerdem mögliche Behebungsschritte vor.

Snyk Code-Ansicht der Fix-Analyse für CWE-916 mit Details zur Schwachstelle beim Passwort-Hashing, Hinweisen zur Prävention und PHP-Beispielfixes.
Die Fix-Analyseansicht in Snyk Code liefert Details zu Schwachstellen und schlägt Schritte zu deren Behebung vor.

Scannen Sie Ihre Laravel-Projekte schneller, als Sie „PHP artisan“ sagen können

Das Scannen Ihrer Laravel-Projekte mit Snyk ist schnell und einfach. Erstellen Sie zunächst ein kostenloses Snyk-Konto und melden Sie sich auf der Plattform Ihrer Wahl an. Nach der Kontoerstellung stehen Ihnen verschiedene Möglichkeiten zur Verfügung, Ihre Projekte zu scannen.

Repository verbinden

Das ist mit Abstand meine bevorzugte und einfachste Möglichkeit, fortlaufend über neu auftretende Schwachstellen informiert zu werden. Klicken Sie in Ihrem Snyk-Dashboard oben rechts auf Add Project und wählen Sie das gewünschte Repository aus. Wenn es nicht im Schnellmenü angezeigt wird, klicken Sie auf Other und wählen Sie auf der Integrationsseite die gewünschte Plattform aus.

Snyk-Integrationsseite mit Quellcodeverwaltungs-Integrationen für GitHub, GitHub Enterprise, GitLab, Bitbucket und Azure Repos

Nachdem Sie die Schritte zum Verbinden Ihres Kontos ausgeführt haben, können Sie das Projekt-Repository auf der Konfigurationsseite verbinden. Aktivieren Sie das Kontrollkästchen für den Repository-Typ und klicken Sie auf Add selected repository.

Snyk-Bildschirm zur Auswahl eines GitHub-Repositorys mit der Suche nach „laravel“ und dem zum Testen ausgewählten laravel-Repository.

Snyk CLI installieren

Mit der Snyk CLI können Sie SCA- und SAST-Tools mit wenigen Befehlszeilen direkt in Ihre Befehlszeile integrieren. Dafür können Sie npm oder Yarn, eigenständige ausführbare Dateien oder betriebssystemspezifische Installationspakete verwenden.

Prüfen Sie nach der Installation der Snyk CLI mit snyk –version, ob alles korrekt funktioniert. Verbinden Sie anschließend die Snyk CLI mit Ihrem Snyk-Konto, indem Sie in der Befehlszeile snyk auth ausführen. Dadurch sollte sich Ihr Standardbrowser mit der Authentifizierungsseite öffnen.

Snyk-CLI-Authentifizierungsseite mit der Überschrift „Für CLI authentifizieren“ und einer Schaltfläche „Authentifizieren“

Klicken Sie auf Authenticate. Anschließend können Sie ein Projekt mit meinem bevorzugten CLI-Befehl scannen: snyk test.

Terminalausgabe mit einem Snyk-Test einer Laravel-Beispiel-App. Es wurden keine anfälligen Pfade gefunden; angezeigt werden Details zu npm-Paketen.

IDE-Integrationen

Diese Scan-Tools lassen sich auch in Ihre IDE integrieren. So können Sie Ihre Anwendung während der Entwicklung in Echtzeit prüfen und scannen. Die Snyk-Integration für VSCode umfasst beispielsweise Echtzeit-Scans von Paketen und Abhängigkeiten. Erfahren Sie, wie Sie loslegen und wie die Visual Studio-Code-Integration in Echtzeit funktioniert.

Denken Sie daran, Open-Source-Projekten etwas zurückzugeben

Denken Sie immer daran, Open-Source-Projekte nach Möglichkeit zu unterstützen – insbesondere, wenn Sie sie regelmäßig nutzen. Die Laravel-Community ist im Laufe der Jahre mit den zunehmenden Funktionen und der steigenden Verbreitung erheblich gewachsen. Dadurch ist das Projekt zu dem geworden, was es heute ist.

Starten Sie mit Capture-the-Flag

Erfahren Sie in unserem virtuellen On-Demand-Workshop für Einsteiger, wie Sie Capture-the-Flag-Challenges lösen.

Weiterlesen

blog feature snyk container custom base recommendations
Blog

Evo Agentic AppSec: Sicherheit, die mit der KI-Entwicklung Schritt hält

KI-gestützte Entwicklung überholt herkömmliche Security-Workflows. Snyk Agentic AppSec setzt Security-Agenten ein, die Schwachstellen kontinuierlich finden, beheben und überprüfen – während Menschen die Maßstäbe festlegen.

blog feature ai violet
Blog

VulnBump: Können KI-Agenten anfällige Abhängigkeiten beheben, ohne den Build zu beschädigen?

VulnBump testet KI-Agenten anhand von 307 realen Dependency-Upgrades. Eine Lösung zählt nur, wenn die Sicherheitslücke behoben ist und Build sowie Tests weiterhin erfolgreich sind.

Blog

Frontier-Modelle fanden die Schwachstellen. Nur der Angreifer fand die Angriffsketten.

Die statische Analyse fand die Schwachstellen, doch erst Live-Angriffstests bewiesen, wie sie sich zu Angriffen verketten lassen. Ein Vergleich von Evo COS, Claude Security und Claude Code Security.