PHP macht es dem Nutzer zu einfach, Fehler zu machen

Es hätte mehrere Möglichkeiten gegeben, diese Sicherheitslücke zu verhindern. Um künftig Ähnliches zu vermeiden, ist die Display-Errors-Option standardmäßig deaktiviert. Die Exceptions von PDO werden nun korrekt behandelt. Zudem ist ein generischer Exception-Handler aktiv, der bei allen unbekannten Exceptions aufgerufen wird.

Ich will nicht alle Schuld von mir weisen, aber ich denke, dass PHP es Nutzern hier zu einfach macht, derartig gravierende Fehler zu begehen. Idealerweise sollten Tools und Programmiersprachen, wann immer es möglich ist, automatisch die sichere Option bevorzugen.

Wieso ist Display-Errors standardmäßig aktiv?

In diesem Fall führt aber die einfachste Verwendung von PDO - ohne Exception-Handling und mit der Standardeinstellung für display_errors - zu einer sehr kritischen Sicherheitslücke.

Da von der Nutzung von display_errors in Produktivsystemen abgeraten wird, ist es kaum verständlich, warum die Option trotzdem standardmäßig aktiv ist. In Sachen Exceptions wäre es wünschenswert, wenn es eine Möglichkeit gäbe, bestimmte Exceptions so zu markieren, dass sie in jedem Fall behandelt werden müssen.

  • Und auf einmal war das Passwort auf der Webseite zu lesen. (Screenshot: Hanno Böck)
  • Die Warnung in der PHP-Doku zu display_errors ist angesichts des<br>Risikos nicht sehr deutlich. (Screenshot: Hanno Böck)
  • Auf die Risiken von fehlendem Exception-Handling in PDO hingegen wird deutlich hingewiesen. (Screenshot: Hanno Böck)
Die Warnung in der PHP-Doku zu display_errors ist angesichts des<br>Risikos nicht sehr deutlich. (Screenshot: Hanno Böck)

So könnte eine Funktion bereits die Ausführung verweigern, wenn sie nicht innerhalb eines passenden try/except-Blocks ausgeführt wird. Außerdem ist es fragwürdig, dass Stack Traces generell bei nicht behandelten Exceptions ausgegeben werden. Man könnte diese auch zu einer Extra-Option machen oder zumindest die Funktionsparameter verbergen.

Der Vorfall zeigt, dass selbst die ausgefeiltesten Sicherheitsmechanismen nicht immer schützen können. Keiner der genutzten Sicherheitsmechanismen hat versagt. HTTPS schützt sehr zuverlässig vor manipulierten Daten und - mit gewissen Einschränkungen - vor mitlesenden Lauschern. Richtig verwendet verhindert Content Security Policy alle Cross-Site-Scripting-Lücken. Und Prepared Statements sind ein effektiver Schutz gegen SQL-Injections. Viele mögliche Sicherheitslücken sind damit abgedeckt - aber eben nicht alle.

Bitte aktivieren Sie Javascript.
Oder nutzen Sie das Golem-pur-Angebot
und lesen Golem.de
  • ohne Werbung
  • mit ausgeschaltetem Javascript
  • mit RSS-Volltext-Feed
 Wie konnte das nur passieren?
  1.  
  2. 1
  3. 2
  4. 3


Astorek 15. Apr 2017

Gibt ja eine Website, die versucht, die bekanntesten Static Website Generatoren zu...

Noppen 15. Apr 2017

Mir ist letztens das Essen angebrannt. Ich würde sagen, dass die eigene Küche...

VigarLunaris 15. Apr 2017

Was soll ich da sagen... config.py enthält die variablen Darin liegen Brent-Hashing PWs...

.:Tim:. 15. Apr 2017

Naja, an das selbstverständlichste auf Produktivsystemen hat er nicht gedacht...



Aktuell auf der Startseite von Golem.de
Grace Hopper Superchip
Nvidia zeigt den DGX GH200 AI-Supercomputer

Die Kombination aus Grace Hopper, Bluefield 3 und NVLink ergibt funktional eine riesige GPU mit der Rechenkapazität eines Supercomputers und 144 TByte Grafikspeicher.

Grace Hopper Superchip: Nvidia zeigt den DGX GH200 AI-Supercomputer
Artikel
  1. Gefangen im Zeitstrom, verloren im All: Die zehn besten Sci-Fi-Serien der 1960er
    Gefangen im Zeitstrom, verloren im All
    Die zehn besten Sci-Fi-Serien der 1960er

    Sie sind die Klassiker, auf denen das ganze Genre aufbaut: die großen Science-Fiction-Serien der 1960er. Neben Star Trek gab es hier noch viel mehr.
    Von Peter Osteried

  2. Reiner Haseloff: Ministerpräsident fordert Nullrunde bei Rundfunkbeitrag
    Reiner Haseloff
    Ministerpräsident fordert Nullrunde bei Rundfunkbeitrag

    Zwei Jahre soll der Rundfunkbeitrag eingefroren werden, die Zukunftskommission derweil Reformideen vorlegen, schlägt Sachsen-Anhalts Ministerpräsident vor.

  3. Speicherleaks vermeiden: Ressourcen- und typensicheres Programmieren in C++
    Speicherleaks vermeiden
    Ressourcen- und typensicheres Programmieren in C++

    Bei C++ liegt alles in der Hand der Entwickler - und das kann gut und schlecht sein. Richtig angewendet, ist die Sprache aber alles andere als unsicher.
    Eine Anleitung von Adam Jaskowiec

Du willst dich mit Golem.de beruflich verändern oder weiterbilden?
Zum Stellenmarkt
Zur Akademie
Zum Coaching
  • Schnäppchen, Rabatte und Top-Angebote
    Die besten Deals des Tages
    • Daily Deals • Microsoft Xbox Wireless Controller 40,70€ • Lexar Play 1 TB 99,60€ • DAMN!-Deals mit AMD-Bundle-Aktion • MindStar: AMD Ryzen 9 5950X 429€, MSI RTX 3060 Gaming Z Trio 12G 329€, GIGABYTE RTX 3060 Eagle OC 12G 299€, be quiet! Pure Base 500DX 89€ • Logitech bis -46% [Werbung]
    •  /