PHP.ini-Einstellungen

Für Fortgeschrittene geeignet
 

Vorraussetzungen

Dauer

ca. 20 Min.

Joomla! wird in der Programmierprache „PHP“ geschrieben. Wie sich die installierte PHP-Umgebung auf dem Webserver verhält lässt sich in der PHP-Konfiguration (php.ini) bei vielen Webhostern einstellen.
Wie und in welchem Umfang sich die php.ini ändern lässt hängt vom Webhoster selbst ab, einige bieten ihren Kunden die Möglichkeit die Datei direkt an einem zentralen Ort zu ändern, andere wiederrum erlauben nur die Änderung von bestimmten Eigenschaften über ihr Kundencenter.

Wir zeigen in diesem Artikel nur die aus unserer Sicht nötigen Änderung auf, wir können an dieser Stelle keine komplette Datei zum einfachen Kopieren und Einfügen für Ihren individuellen Webspace anbieten!
Nehmen Sie daher, je nach Webspace-Umgebung, die Änderungen manuell vor!

Unsere Anpassungen in der php.ini basierend auch auf eigenen Analysen von Schadcode, der bei uns eingeschleust werden sollte und weiteren Recherchen. Wenn Sie über die Einstellungen mit der Maus fahren, so bekommen Sie eine kurze Beschreibung angezeigt:


### Security - General ###

safe_mode = OffDer „Safe Mode“ von PHP ist eine Funktion von PHP, die das Ausführen von Scripten sicherer machen sollte, die Aktivierung dieser Funktion führte aber in vielen Fällen nur zu Problemen, deshalb wird es diesen Modus auch in PHP 6 nicht mehr geben. Sie sollten sicherstellen, dass dieser Modus nicht aktiviert ist.
expose_php = OffDie Deaktivierung dieser Funktion sorgt dafür, dass beim Ausliefern eines Dokuments der Webserver dem Webbrowser nicht mitteilt, dass es sich hier um eine PHP-Seite handelt.
magic_quotes_gpc = OffDiese Option wird deaktiviert, da ihr Nutzen umstritten ist, sie Performance frisst und deswegen wird sie auch in PHP 6 entfernt.
allow_url_fopen = OffMit der Deaktivierung dieser Funktion sorgen Sie dafür, dass keine fremden Dateien von anderen Servern über dieses „Protokoll“ heruntergeladen werden können.<br /><strong>ACHTUNG!:</strong> Die Funktion „Von URL installieren“ unter „Installieren/Deinstallieren“ funktioniert jetzt nicht mehr!
allow_url_include = OffMit der Deaktivierung dieser Funktion sorgen Sie dafür, dass keine fremden Dateien von anderen Servern in einem Script importiert werden können.
open_basedir = /Absoluter Pfad zu Joomla!/htdocs/joomla/Hier sperren Sie Joomla! in seinem eigenen Pfad ein, sodass kein Script außerhalb des Joomla!-Verzeichnisses irgendeinen Zugriff bekommt.
HINWEIS: Dieser Eintrag macht nur Sinn, wenn Joomla! nicht im sog. „Document-Root“ installiert ist, sondern in einem Unterverzeichnis!
HINWEIS:Der abschließende Slash („/“) ist wichtig! Wird dieser weggelassen, so ist der Schutz nicht gegeben!

### Security - Hide Errors ###

error_reporting = (E_ALL & ~E_NOTICE & ~E_WARNING)Hier werden Hinweise und Warnungen unterdrückt.
display_errors = OffEs werden dem Benutzer keine Fehler & Hinweise angezeigt, auch wenn es welche geben sollte. Fehler würden einem Angreifer nämlich wertvolle Informationen über den Server geben.

### Security - Session ###

session.use_trans_sid = 0Hier legen Sie fest, dass keine Sitzungsinformationen an die URL angehängt werden.
session.cookie_httponly = 1Setzt für Cookies das „HttpOnly“-Flag, d. h. dass alle Browser die diese Kennzeichung unterstützen die Informationen des Cookies nicht z. B. an JavaScript weitergeben. Dies kann vor XSS-Attacken schützen.
session.hash_function = sha512Diese Funktion legt den sog. Prüfsummen-Algorithmus von Sitzungs-IDs fest (vor PHP 5.3.0 sollte statt „sha512“ der Wert „1“ verwendet werden). Seit PHP 5.3.0 inkl. der Hash-Erweiterung, sollte SHA512 verwendet werden.
session.save_path = /Absoluter Pfad zu Joomla!/htdocs/joomla/tmpEs wird sichergestellt, dass die Sitzungsdaten in einem von Ihnen kontrolliertem Verzeichnis gespeichert werden und nicht zentral in einem Verzeichnis des Hosters.
# session.entropy_file: Möglicher anderer Pfad = /dev/random
session.entropy_file = /dev/urandomSie legen hier fest, wie die Sitzungs-ID zusätzlich verschlüsselt wird. Ob „random“ oder „urandom“ genutzt wird ist in den meisten Unix-Umgebungen egal.

### Security - Upload / Memory ###

# file_uploads: Muss nichts hochgeladen werden, schalten wir es einfach ab:
file_uploads = OffMit „file_uploads = On“ kann das Hochladen von Dateien über PHP wieder erlaubt werden.
upload_tmp_dir = /Absoluter Pfad zu Joomla!/htdocs/joomla/tmpWenn etwas hochgeladen wird, wird es in ein Verzeichnis gespeichert, dass von uns kontrolliert werden kann und nicht zentral beim Hoster liegt.
upload_max_filesize = 3MEs wird festgelegt, wie groß Dateien zum Hochladen maximal seien dürfen.
memory_limit = 40MHier wird definiert, wie viel Memory (Arbeitsspeicher) ein PHP-Script höchstens belegen darf.
post_max_size = 4MEs wird festgelegt, wie viel Daten via POST (also im sog. Header einer HTTP-Anfrage) geschickt werden dürfen.
max_execution_time = 30Gibt an, wie lange ein PHP-Script höchstens ausgeführt werden darf. Ein zu hoher Wert würde unnötige Serverzeit kosten, hierdurch sogar den Server in die Knie zwingen zu können und ein zu kleiner Wert könnte gewollte Scripte zu früh abbrechen.
max_input_time = 30Die maximale Zeit, die ein PHP-Script auf Daten (z.B. POST-Daten) wartet bzw. sie verarbeiten darf. Ein zu hoher Wert würde unnötige Serverzeit kosten, hierdurch sogar den Server in die Knie zwingen zu können und ein zu kleiner Wert könnte gewollte Scripte zu früh abbrechen.

### Security - Disabled functions ###

disable_functions = apache_child_terminate, apache_get_modules, apache_get_version, apache_getenv, apache_note, apache_setenv, disk_free_space, diskfreespace, dl, escapeshellcmd, exec, ini_alter, ini_get_all, ini_restore, ini_set, passthru, php_uname, phpinfo, popen, proc_nice, proc_open, shell_exec, show_source, symlink, systemDurch die Deaktivierung dieser Funktionen wird vorallem verhindert, dass ein eingeschleußtes Script zu viele Informationen über den eingesetzten Webserver sammeln kann. Darüber hinaus wird dafür gesorgt, dass es keine Shellbefehle ausführen darf.
ACHTUNG!: Mit „phpinfo“ werden die PHP-Informationen im Backend unter „Hilfe“ → „Systeminfo“ unterdrückt!


# In diese Liste kann man noch weitere PHP-Funktionen aufnehmen, wie z.B. „chmod“, damit wird Joomla! das Ändern von Dateirechten entzogen, macht aber nur Sinn, wenn Sie nichts mehr in Ihrem Joomla! installieren oder hochladen wollen; auch das Speichern der Konfiguration ist danach nicht mehr möglich.

php.ini-Werte in der Htaccess setzen

Sollten Sie keinen Zugang zur php.ini haben, so lassen sich einige Einstellungen auch über eine Htaccess-Datei im Document-Root von Joomla! anpassen. Nachfolgend ein Beispiel, dass auf der offiziellen Dokumenation von PHP aufbaut:

Die nachfolgende Möglichkeit Werte für die php.ini in einer Htaccess-Datei zu setzten sind extrem abhängig von der jeweiligen individuellen Konfiguration der eingesetzten Serverumgebung Ihres Webhosters! - Halten Sie hier ggf. Rücksprache mit Ihrem Hoster, wie Sie php.ini-Variablen selbst anpassen können!
  • Beschränkt sich die Einstellung auf „An“ („On“) oder „Aus“ („Off“), so wird folgendes geschrieben:
    php_flag Name On|Off
    Beispiel:
    php_flag safe_mode Off
  • Muss man jedoch einen anderen Wert als „An“ oder „Aus“ setzen, wie z.B. einen Pfad, dann nutzt man:
    php_value Name "Wert"
    Beispiel:
    php_value open_basedir "/Absoluter Pfad zu Joomla!/htdocs/joomla/"

Weiterführende / Verwandte Artikel