5 Tipps zum Absichern von PHP Laravel
DeveloperSteve Coochin
21. April 2022
0 Min. LesezeitLaravel 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.

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:
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.

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.

Anhand praxisnaher Beispiele der jeweiligen Schwachstelle schlägt Snyk Code außerdem mögliche Behebungsschritte 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.

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 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.

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

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.



