Doğan Ucar
Doğan Uçar
Geschäftsführer

In der modernen Welt der Online- und Cloud-Angebote ist neben den endlos erscheinenden Angeboten leider auch die Schattenseite nicht außer Acht zu lassen. Anzunehmen, dass der zur Verfügung gestellte Dienst ausschließlich mit guten Absichten genutzt wird ist leider fatal. In Wahrheit muss genau das Gegenteil angenommen werden: Wenn Ihr System eine Schwachstelle hat, müssen Sie davon ausgehen, dass sie ausgenutzt wird. Daher ist neben einer sicherheitsgetriebenen Software-Entwicklung auch Monitoring und Prävention unumgänglich.

Der nachfolgende kurze Beitrag soll drei Kernpunkte einer sicheren Konfiguration von PHP basierten Anwendungen bieten. Die Liste ist ausdrücklich nicht als vollständig zu erachten und dient daher wenn überhaupt nur als guter Einstieg.

Suchen Sie Wege, Ihren Source Code sicherer zu gestalten, wissen aber nicht, wo Sie anfangen sollen? Wollen Sie Ihre Infrastruktur einem Audit unterziehen oder suchen ganz allgemein Beratung und Umsetzung? Dann kontaktieren Sie uns für ein unverbindliches Kennenlerngespräch über unser Kontaktformular! Wir freuen uns darauf.

Deaktivieren Sie gefährliche PHP Funktionen

Während die nachfolgenden Methoden an sich keine Sicherheitsprobleme darstellen, sollten Sie dennoch die Verwendung vermeiden. Diese Funktionen übergeben Befehle von der Ebene der Programmiersprache auf die des Betriebssystems. Das Betriebssystem ist in aller Regel viel mächtiger und kann unerwünschtes, fatales Verhalten darlegen, wenn Benutzereingaben nicht ordentlich validiert werden — was nicht immer trivial ist. Ein Beispiel für sogenannte Shell-Injection Attacken haben wir hier thematisiert.

Funktion Beschreibung
exec Ermöglicht die Ausführung beliebiger Befehle, was von Angreifern ausgenutzt werden kann, um unbefugten Zugriff oder Kontrolle zu erlangen.
passthru Gibt den Befehl direkt an die Shell weiter, was ein Sicherheitsrisiko darstellt, wenn die Benutzereingabe nicht ordnungsgemäß bereinigt wird.
shell_exec Ermöglicht die Ausführung von Shell-Befehlen, die für Remote-Code-Ausführung ausgenutzt werden können und die Sicherheit des Servers gefährden.
system Führt ein externes Programm aus und zeigt die Ausgabe an, was sensible Informationen preisgeben oder nicht autorisierten Code ermöglichen kann.
proc_open Ermöglicht die Ausführung externer Prozesse, was bei unbereinigter Benutzereingabe zu Sicherheitslücken führen kann.
popen Öffnet einen Prozessdateizeiger, wodurch Angreifer Befehle ausführen und die Serversicherheit gefährden können.
parse_ini_file Kann sensible Konfigurationsdetails preisgeben – bei manipulierbarem Dateipfad führt das zu Sicherheitsverletzungen.
show_source
highlight_file
Zeigt den Quellcode einer Datei an und gibt damit möglicherweise sensible Informationen oder geistiges Eigentum preis.
eval Wertet eine Zeichenkette als PHP-Code aus – potenzielle Sicherheitslücke durch Code-Injektion bei unsicheren Eingaben.
create_function Erstellt eine anonyme Funktion aus einer Zeichenkette – riskant bei unzureichend validierter Benutzereingabe (Code-Injektion).

Statische Sicherheitsrelevante Konfigurationseinstellungen

Die php.ini-Datei bietet eine Reihe von Konfigurationsmöglichkeiten. Einige sind abhängig wie PHP kompiliert wurde, andere sind immer enthalten. In jedem Falle sollten Sie also einen Blick in die offizielle PHP Dokumentation zu der php.ini werfen.
Nachfolgend möchten wir einige wichtige Einstellungen vorstellen, die Sie unbedingt setzen sollten, um Ihren produktiv eingesetzten Server abzuhärten:

PHP-Konfiguration Empfohlene Einstellung & Begründung
display_errors „Off“, um zu verhindern, dass Benutzern Fehlermeldungen mit sensiblen Informationen oder Systempfaden angezeigt werden.
expose_php „Off“ – unterdrückt die PHP-Versionsinformationen in HTTP-Headern. Schützt vor bekannten Exploits gegen bestimmte Versionen.
allow_url_fopen
allow_url_include
Unbedingt auf „Off“ setzen, um Sicherheitslücken wie Remote File Inclusion (RFI) und Remote Code Execution (RCE) zu verhindern.
session.cookie_secure „On“ – stellt sicher, dass Session-Cookies nur über HTTPS übertragen werden.
session.cookie_httponly „On“ – verhindert den Zugriff clientseitiger Skripte (z. B. JavaScript) auf Cookies und reduziert XSS-Risiken.
session.use_strict_mode „On“ – aktiviert striktes Session-Handling und schützt vor Session-Fixation-Angriffen.
session.use_only_cookies „On“ – stellt sicher, dass Session-IDs ausschließlich über Cookies und nicht per URL übertragen werden.

Abhängige Sicherheitsrelevante Konfigurationseinstellungen

Die nachfolgenden Optionen lassen sich ebenfalls in der php.ini finden. Ihre Werte sind allerdings abhängig von Ihrer Anwendung bzw. Anforderungen. Bewerten Sie kritisch die Funktionsweise der Optionen und setzen Sie realistische Werte. Allgemein gilt: je weniger desto besser und ganz abgeschaltet ist am besten!

PHP Directive Beschreibung
file_uploads „Off“ – verhindert unautorisierte Datei-Uploads.
upload_max_filesize / post_max_size Begrenzen Sie die maximale Datei- und POST-Datengröße, um Angriffe auf die Ressourcenerschöpfung zu verhindern.
max_execution_time / max_input_time Begrenzt die Skriptausführungs- und Eingabeverarbeitungszeiten, um das Risiko von Denial-of-Service-Angriffen (DoS) zu verringern.
memory_limit Setzt ein angemessenes Limit, um eine übermäßige Speichernutzung zu verhindern und DoS-Angriffe abzumildern.
session.cookie_samesite Konfigurieren Sie auf „Strict“ oder „Lax“, um sich gegen Cross-Site Request Forgery (CSRF)-Angriffe zu schützen, indem Sie kontrollieren, wann Cookies gesendet werden.
Ucar Solutions ist auf YouTube!
Dieser Blogpost ist ebenfalls in Videoform verfügbar.

Aus Datenschutzgründen wurde das Video als Screenshot und nicht wie üblich als YouTube-Embed eingebettet. Wenn Sie das Video schauen möchten klicken Sie einfach auf das Screenshot.
PHP Sicherheitseinstellungen für die Produktivumgebung
PHP Sicherheitseinstellungen für die Produktivumgebung

IT-Sicherheit mit Ucar Solutions

Wir bieten Ihnen umfassende System- und Source-Code-Prüfungen, um Ihre Datenbanken, Server und Anwendungen vor zahlreichen potenziellen Sicherheitsgefahren und anderen sicherheitsrelevanten Aspekten zu schützen. Mit Hilfe von automatisierten und manuellen Verfahren unterstützen wir Sie bei der Sicherung Ihrer sensiblen und geschäftskritischen Daten und der Einhaltung geltender Gesetze.

Unsere automatisierten Tests umfassen unter anderem Penetrationstests, toolgestützte Code-Analyse und -Dokumentation. Basierend darauf untersuchen wir persönlich den Source-Code, versuchen, die Architektur zu durchdringen und potenzielle Probleme oder Vorschläge in diesem Zusammenhang zu identifizieren und anzubieten.

Zusätzlich treten wir als „Software-as-a-Service“ (SaaS) Anbieter auf und stellen Ihnen verschiedene Teil- oder Ganzkomponenten als Software-Dienstleistung zur Verfügung, die unter Berücksichtigung aller oben genannten Sicherheitsaspekte ständig verfügbar sind. Auf diese Weise können Sie sich auf Ihre Anwendung konzentrieren, während wir bestimmte Bereiche bereitstellen.

Verwenden Sie das folgende Kontaktformular und kontaktieren Sie uns noch heute für ein unverbindliches Erstgespräch. Wir freuen uns auf Sie!

Jetzt Anfragen!