www.PHP-Kurs.com

PHP lernen für Einsteiger
und Fortgeschrittene

PHP-Tutorial mit Videos

Sie befinden sich: Startseite » PHP und Sicherheit » Unterdrücken von PHP-Fehlermeldungen

Unterdrücken von PHP-Fehlermeldungen

Fehlermeldungen können erfahrenen Angreifern sehr viel verraten und durch die entsprechenden Schlussfolgerungen dann den Angriff erfolgreich verlaufen lassen. Daher sollten Sie nach der Entwicklungsphase tunlichst die Fehlerausgabe abschalten. Intern können Sie die Fehlerausgabe nutzen (z.B. per Mail an den Programmierer etc.). Einige Provider haben standardmäßig die Fehlermeldungen von Anfang an deaktiviert (z.B. Goneo), bei anderen Providern ist standardmäßig die Fehlermeldung aktiviert (z.B. 1&1).

ALLE Fehlermeldungen bei der Entwicklungsphase anzeigen

Während der Entwicklungsphase sollten ALLE Fehlermeldungen (auch die Warnungen) angezeigt werden. Dadurch fallen auch undefinierte Variablen schnell auf. Die typische Fehlermeldung ist dann

Notice: Undefined variable: inhalt in 
D:\xampp\htdocs\sicherheit\error-reporting-01.php on line 3

Das Programm dazu:

?php
error_reporting(E_ALL);
echo "Ausgabe: ". $inhalt;
?>

Der Vorteil daran ist, dass man sofort sieht, wo man mit undefinierten Variablen arbeitet. Und diese Variablen können im schlechtesten Fall von außen gesetzt werden und der Angreifer kann viel Spaß damit haben. Allerdings hat der Programmierer dadurch herzhaft undefinierte Zustände. Daher macht es Sinn, die Variablen zu initialisieren (wie es in den meisten Programmiersprachen Pflicht ist).

<?php
error_reporting(E_ALL);
$inhalt = "";
$inhalt = "Hallo Welt";
echo "Ausgabe: ". $inhalt;
?>

Das Einschalten der Fehlermeldungen läuft über:

<?php
error_reporting(E_ALL);
ini_set("display_errors", "on");
ini_set("display_startip_errors", "on");
?>

php.ini – Einstellungen für das Error-Reporting

Wenn man Zugriff auf die php.ini hat, können auch dort die entsprechenden Einstellungen vorgenommen werden.

In der php.ini finden sich die Einträge:

error_reporting  =  E_ALL
display_errors = On
log_errors = On
error_log = c:\apachefriends\xampp\apache\logs\phperror.log

(diese Einträge kommen von der lokalen XAMPP-Installation. Auf dem Server hat man bei der Angabe des error_log natürlich keinen Windows-Pfad.

Wenn man bei seiner Installation nicht weiß, wo die genutzte php.ini-Datei liegt, hilft

<?php
phpinfo();
?>

Hier ist gleich im ersten Block angegeben, wo die php.ini-Datei liegt. In meiner XAMPP-Windows-Installation unter d:\xampp\apache\bin\php.ini

Speicherort php.ini über phpinfo() ermitteln
Speicherort php.ini über phpinfo() ermitteln

Dort findet sich der Eintrag im Bereich „Error handling and logging“:

error_reporting  =  E_ALL & ~E_NOTICE

Das bedeutet, er zeigt alle Fehler, aber ohne (das bedeutet die Tilde ~) die Notizen. Wir wollen aber auch die Notizen, damit wir alle undefinierten Variablen mitbekommen.

display_errors = On

Die Fehler werden als Teil der Ausgabe auf dem Bildschirm mit ausgegeben. Während der Entwicklung OK, später nein. Wir wollen dem Angreifer keine Hilfestellungen geben.

log_errors = Off

Es gibt die Möglichkeit, die Fehler in eine Log-Datei schreiben zu lassen. Dabei sollte man sich Gedanken machen, ob man auch regelmäßig sich diese Log-Datei zu Gemüte führt oder ob es sich um ein Kundenprojekt handelt, wo der Kunde möglichst wenig laufende Kosten haben will und das Log-File vergessen wird und über die Zeit zu ungeahnten Größen wächst und selber irgendwann ein Problem darstellt.

;error_log = "\xampp\apache\logs\phperror.log"

Durch das Semikolon am Anfang auskommentiert. Wir schalten die log_errors auf On und nutzen die Datei „phperror.log“

error_reporting  =  E_ALL
log_errors = On
error_log = "\xampp\apache\logs\phperror.log"

Bevor in die Datei geschrieben wird, muss der Apache wieder frisch gestartet werden, damit die neuen Einstellungen übernommen werden.

Danach erscheint (einfach suchen über STRG + f) unter error_log der Pfad und und bei log_errors sollte On stehen:

error-logs kontrollieren und Speicherort Errors anzeigen
error-logs kontrollieren und Speicherort Errors anzeigen

Unter Angabe von Datum und Uhrzeit erscheint nun unser Fehler (immer noch vom ersten Programm mit der undefinierten Variablen)

[03-Dec-2008 15:05:41] PHP Notice:  Undefined variable: inhalt in 
D:\xampp\htdocs\sicherheit\error-reporting-01.php on line 3

Eine Auflistung der php.ini und die Bedeutung der einzelnen Einstellungen ist unter https://www.php.net/manual/de/ini.php zu finden.

Wenn Sie einen Fehler finden, bitte mitteilen (egal ob Schreibfehler oder inhaltlicher Fehler).

Mit Maus fehlerhafte Stelle markieren und übernehmen mit folgendem Button:



(kann angegeben werden)

Nach Absenden kommt hier Feedback! Bitte nicht doppelt absenden. Danke.

Bitte unterstützen Sie dieses Projekt

Sie können dieses Projekt in verschiedenen Formen unterstützen - wir würden uns freuen und es würde uns für weitere Inhalte motivieren :).

unsere Videos bestellen

Unsere Videos und eBooks bestellen.

Spenden

Sie können uns eine Spende über PayPal zukommen lassen.

Weiterempfehlungen

Empfehlen Sie es weiter - wir freuen uns immer über Links und Facebook-Empfehlungen.

Bücher über Amazon

Bestellen Sie Bücher über folgende Links bei Amazon:

Fehler melden

Vielen Dank für Ihre Hilfe