Anleitungen und FAQ → (Frage & Antwort zu häufig gestellten Fragen ✔)

  • Apache Direktiven .htaccess Open or Close


    Da es sich bei der .htaccess Datei um eine versteckte Systemdatei handelt ist es bei einigen FTP Programmen notwendig diese speziell anzeigen zu lassen. Wie diese Funktion in Ihrem FTP Programm aktiviert wird, entnehmen Sie bitte aus der beiliegenden Hilfe/Dokumentation Ihres FTP-Programms.

    Bitte beachten Sie, dass diese Datei bei einer Prg.-Installation eventuell überschrieben wird. Legen Sie deshalb immer eine Sicherheitscopie (Name ändern) an.
     

    Folgende Optionen können durch eine eigene ".htaccess"-Datei angepasst werden:

    Indexes: FancyIndexing, AddIcon, AddDescription

    AuthConfig: AuthDBMGroupFile, AuthDBMUserFile, AuthGroupFile, AuthName, AuthType, AuthUserFile und require

    Limit: Zugriffsbeschränkung auf Basis von Hostname und IP-Adress

    FileInfo: AddType, AddEncoding, AddLanguage, AddCharset, AddHandler, RemoveHandler, LanguagePriority, ErrorDocument, DefaultType, Action, Redirect, RedirectMatch,

    RedirectTemp, RedirectPermanent, PassEnv, SetEnv, UnsetEnv, Header, RewriteEngine, RewriteOptions, RewriteBase, RewriteCond, RewriteRule, CoockieTracking, CoockieName

    Detailierte Infos im Wiki

     

  • PHP Einstellungen Open or Close


    Genau wie die Hardware einen Technologiesprung gemacht hat, hat das auch die Software getan. Es ist unter den neuen Betriebssystemen und mit den neuen modernen PHP-Versionen nicht mehr möglich eine individuelle php.ini Datei zu konfigurieren. Was vor wenigen Jahren noch notwendig war ist heute nicht mehr nötig und auch in einigen Fällen nicht mehr möglich. Wenn man veraltete Websoftware einsetzt, kann das in einigen Fällen zu Kompatibilitätsproblemen führen. Die PHP-Version ab 5.3.x ist nicht zu 100% Abwärtskompatibilität zur PHP 5.2.x. Die meisten benötigten Direktiven kann man mittlerweile entweder in einer .htaccess Datei oder im PHP-Script selbst verändern.

    Hier einige interessante Links rund um PHP: https://php.net/manual/de/index.php     https://php.net/manual/de/ini.php     https://php.net/manual/de/ini.list.php     http://php-de.github.io     http://php.net/manual/de/configuration.file.per-user.php     http://php.net/manual/de/ini.php

    Hier einige der wichtigsten PHP-Direktiven und die Standardeinstellungen.

    ↓↓ allow_url_fopen ↓↓ 

    allow_url_fopen ➩ Diese Option aktiviert URL-unterstützende fopen()-Wrapper, die es ermöglichen, auf URL-Objekte wie normale Dateien zuzugreifen. Standardwrapper werden für den Zugriff auf entfernte Dateien über das FTP- und HTTP-Protokoll mitgeliefert, einige Extensions wie zlib registrieren eventuell weitere Wrapper.
    Empfohlene Einstellung: ON
    PHP Versionen: >PHP 4.0.4
    Vorgegebene Standardeinstellung: ON
    Einstellung kann folgendermaßen geändert werden:   Ticketsystem


    ↓↓ allow_url_include ↓↓ 

    allow_url_include ➩ Ähnlich wie allow_url_fopen, allerdings betrifft diese Einstellung nicht das öffnen von Dateien, sondern das inkludieren (include(), require()) von Dateien. Nur funktional, wenn allow_url_fopen auf aktiv ist
    Empfohlene Einstellung: OFF
    PHP Versionen: > PHP 5.2.0
    Vorgegebene Standardeinstellung: OFF
    Einstellung kann folgendermaßen geändert werden:   Ticketsystem


    ↓↓ disable_functions ↓↓ 

    disable_functions ➩ Hier kann man eine, durch Komma separierte, Liste mit PHP-Funktionen eintragen deren Benutzung gesperrt sein soll. Wenn man sie nicht unbedingt benötigt, sollten hier alle Funktionen eingetragen werden, die einen serverweiten Zugriff gestatten. Manche Funktionen, wie etwa exec(), sind vergleichbar mit einem Generalschlüssel für den Server.
    Empfohlene Einstellung: escapeshellcmd, exec, ini_restore, passthru, popen, proc_nice, proc_open, shell_exec, system
    PHP Versionen: >PHP 4.0.1
    Vorgegebene Standardeinstellung: no value
    Einstellung kann folgendermaßen geändert werden:   Ticketsystem


    ↓↓ display_errors ↓↓ 

    display_errors ➩ Während der Entwicklung einer Seite ist es zum debuggen unerlässlich sich PHP-Fehler auf der Seite anzeigen zu lassen. Im produktiven Einsatz sollte dies allerdings vermieden werden. Fehlermeldungen sind nicht nur lästig und hinterlassen einen unprofessionellen Eindruck beim Sitebesucher sondern, und das ist viel wichtiger, geben Fehlermeldungen jedem Angreifer wichtige Informationen über die Struktur und den Aufbau Ihres Scripts. Es erleichtert dem Angreifer Schwachstellen in Ihrer Anwendung zu entdecken um diese auszunutzen.
    Empfohlene Einstellung: OFF
    PHP Versionen: All
    Vorgegebene Standardeinstellung: OFF
    Einstellung kann folgendermaßen geändert werden: <   Ticketsystem

     

    ↓↓ open_basedir ↓↓ 

    open_basedir ➩ Legt den Wirkungsbereich fest, in dem Sie mit PHP arbeiten können. Auf diese Art kann man verhindern, dass ein manipuliertes Script Zugriff auf gewisse Ordner oder ganze Bereiche auf Ihrem Server erhält. Empfohlene Einstellung: Root Verzeichnis der Internetpräsenz (muss individuell, passend zum Server eingestellt werden. In der Regel ist das:
    /var/www/domain.tld/
    Empfohlene Einstellung: Document root des Webs
    PHP Versionen: ALL
    Vorgegebene Standardeinstellung: Document root des Webs
    Einstellung kann folgendermaßen geändert werden:   Ticketsystem


    ↓↓ register_globals ↓↓ 

    register_globals ➩ Die Wurzel allen Übels, für die allermeisten Sicherheitslöcher in Webanwendungen! Ist diese Einstellung aktiv, werden Variablen aus GET und POST global verfügbar gemacht und überschreiben damit ggf. andere Variablen mit dem selben Namen. Ist diese Einstellung deaktiviert, muss auf Eingaben von aussen explizit mit $_GET und $_POST zugegriffen werden.
    Empfohlene Einstellung: OFF
    PHP Versionen: seit PHP 5.3.0 veraltet (deprecated), ab PHP 5.4.0 entfernt
    Vorgegebene Standardeinstellung: OFF
    Einstellung kann folgendermaßen geändert werden: Ticket, nach Prüfung durch die Technik


    ↓↓ safe_mode ↓↓ 

    safe_mode ➩ Ist der Safe_Mode aktiviert, werden u.a. Berechtigungs-Prüfungen durchgeführt, ob die gewünschte Aktion von einem User durchführbar ist.
    Beispiel: Wenn Sie eine Datei via FTP auf Ihren Server übertragen, bekommt diese Datei ein Vermerk das der FTP-Benutzer XYZ der Besitzer dieser Datei ist. Möchten wir nun diese Datei mit PHP verändern, wird erst geprüft, ob dieser Zugriff vom Benutzer XYZ kommt oder nicht. Das kann bei PHP nicht der Fall sein, also wird der Zugriff auf die Datei verhindert. Umgekehrt funktioniert das genauso. Dateien die per PHP auf den Server übertragen wurden, können nicht so ohne weiteres via FTP gelöscht oder verändert werden. Dieses Thema ist recht komplex und wird sehr gut in jeder PHP Dokumentation erklärt. Sehen Sie hierzu auch: http://php.net/manual/de
    Empfohlene Einstellung: OFF
    PHP Versionen: seit PHP 5.3.0 veraltet (deprecated), ab PHP 5.4.0 entfernt
    Vorgegeben Standardeinstellung: OFF / wegen Sicherheitsrisiko
    Einstellung kann folgendermaßen geändert werden: Ticket, nach Prüfung durch die Technik


    ↓↓ memory_limit ↓↓ 

    memory_limit ➩ Jede Erhöhung des php_memory_limits bedeutet eine DEUTLICHE und GRAVIERENDE Verschlechterung der Performence Ihres gesamten vServers/rServers. Seien Sie versichert dass es sich bei den vorgegebenen Werten um sinnvolle Vorgaben handelt. Die vorgegebene Bandbreite sollten Sie keinesfalls verlassen. Uns ist auch keine Software bekannt die dies zwingend erfordert.

    "RAM ist gut" und "viel RAM ist viel gut" - das ist sicher richtig aber nicht in diesem Fall. Hier trifft nämlich genau das Gegenteil zu - denn hierdurch erhöhen Sie ja NICHT das physikalische RAM !!! Grob gesagt - durch eine Verdopplung Ihres memory_limits HALBIEREN Sie die mögliche Useranzahl für Ihr Forum, eShop, CMS oder was auch immer. Hierdurch wird Ihr Server nicht "schneller" sondern genau das Gegenteil. Sie sollten somit genau abwägen ob eine Erhöhung des memory_limits wirklich notwendig und sinnvoll ist. Sehen Sie hierzu auch: http://php.net/manual/de
    Empfohlene Einstellung: 128M
    PHP Versionen: All
    Vorgegeben Standardeinstellung: 128M
    Einstellung kann folgendermaßen geändert werden: Ticket


    ↓↓ magic_quotes_gpc ↓↓ 

    magic_quotes_gpc ➩ Legt die magic_quotes Einstellungen für GPC (Get/Post/Cookie) fest. Ist diese Einstellung auf on, werden alle ' (einzelne Anführungszeichen), " (doppelte Anführungszeichen), \ (Backslash) und NUL's automatisch mit einem Backslash geschützt.
    Empfohlene Einstellung: OFF
    PHP Versionen: seit PHP 5.3.0 veraltet (deprecated), ab PHP 5.4.0 entfernt
    Vorgegebene Standardeinstellung: OFF
    Einstellung kann folgendermaßen geändert werden: Ticket, nach Prüfung durch die Technik


    ↓↓ register_long_arrays ↓↓ 

    register_long_arrays ➩ Bestimmt, ob PHP die nicht mehr empfohlenen langen Varianten ($HTTP_*_VARS) der vordefinierten Variablen registrieren soll. Wenn On, dann werden PHP-Variablen wie $HTTP_GET_VARS definiert. Wenn Sie diese nicht nutzen, empfehlen wir Ihnen, diese Option aus Gründen der Performance auf "off" zu setzen.
    Empfohlene Einstellung: OFF
    PHP Versionen: seit PHP 5.3.0 veraltet (deprecated), ab PHP 5.4.0 entfernt
    Vorgegeben Standardeinstellung: OFF
    Einstellung kann folgendermaßen geändert werden: Ticket, nach Prüfung durch die Technik


    ↓↓ register_argc_argv ↓↓ 

    register_argc_argv ➩ Bestimmt, ob die argv- & argc-Variablen deklariert werden sollen (betrifft die GET-Informationen).
    Empfohlene Einstellung: OFF
    PHP Versionen: All
    Vorgegeben Standardeinstellung: OFF
    Einstellung kann folgendermaßen geändert werden: Ticket


    ↓↓ short_open_tag ↓↓ 

    short_open_tag ➩ Bestimmt, ob die Kurzform () des PHP-Öffnungs-Tags erlaubt werden soll. Wenn Sie PHP in Kombination mit XML benutzen wollen, dann deaktivieren Sie diese Option, um nutzen zu können. Anderenfalls können Sie das Tag mit PHP ausgeben, z.B. . Wenn diese Option deaktiviert ist, müssen Sie die Langform des PHP-Öffnungs-Tags () benutzen.
    Empfohlene Einstellung: ON
    PHP Versionen: All
    Vorgegeben Standardeinstellung: ON
    Einstellung kann folgendermaßen geändert werden: Ticket


    ↓↓ magic_quotes_runtime ↓↓ 

    magic_quotes_runtime ➩ Falls magic_quotes_runtime aktiviert ist, werden die meisten Funktionen die Daten von einer beliebigen externen Quelle zurückgeben, inklusive Datenbanken und Textdateien, die in den Daten enthaltenen Anführungszeichen mit einem Backslash geschützt zurückgeben.
    Empfohlene Einstellung: OFF
    PHP Versionen: seit PHP 5.3.0 veraltet (deprecated), ab PHP 5.4.0 entfernt
    Vorgegeben Standardeinstellung: OFF
    Einstellung kann folgendermaßen geändert werden: Ticket


    ↓↓ max_execution_time ↓↓ 

    max_execution_time ➩ Legt die maximale Zeit in Sekunden fest, die ein Skript laufen darf, bevor der Parser die Ausführung stoppt. Diese Einstellung hilft zu verhindern, dass schlampig geschriebene Skripte Ihren Server lahmlegen. Der Standardwert für diese Einstellung ist 30 Sekunden.
    Empfohlene Einstellung: 30
    PHP Versionen: All
    Vorgegeben Standardeinstellung: 30
    Einstellung kann folgendermaßen geändert werden: Ticket


    ↓↓ max_file_uploads ↓↓ 

    max_file_uploads ➩ Setzt die maximal erlaubte Anzahl an gleichzeitig hochzuladenen Dateien
    Empfohlene Einstellung: 20
    PHP Versionen: All
    Vorgegeben Standardeinstellung: 20
    Einstellung kann folgendermaßen geändert werden: Ticket


    ↓↓ output_buffering ↓↓ 

    output_buffering ➩ gibt die maximale Größe an Bytes bzw. Verfügbarkeit des Buffers für Scripte an
    Empfohlene Einstellung: 4096
    PHP Versionen: All
    Vorgegeben Standardeinstellung: 4096
    Einstellung kann folgendermaßen geändert werden: Ticket


    ↓↓ post_max_size ↓↓ 

    post_max_size ➩ Setzt die maximal erlaubte Größe von POST-Daten. Diese Option betrifft auch den Datei-Upload.
    Empfohlene Einstellung: 48M
    PHP Versionen: All
    Vorgegeben Standardeinstellung: 48M
    Einstellung kann folgendermaßen geändert werden: Ticket


    ↓↓ upload_max_filesize ↓↓ 

    upload_max_filesize ➩ Setzt die maximal erlaubte Größe von Dateien, die hochgeladen werden
    Empfohlene Einstellung: 32M
    PHP Versionen: All
    Vorgegeben Standardeinstellung: 32M
    Einstellung kann folgendermaßen geändert werden: Ticket


    Der einfachste Weg die aktive Konfiguration anzuzeigen ist die phpinfo.php    
     

  • php_display_error ON Open or Close

    php_display_error =  on

    Genau das währe sicherheitstechnisch eine Katastrophe.

    Im produktiven Umfeld, also auf öffentlichen Webseiten die 24 Stunden täglich und 365 Tage im Jahr weltweit allen Angriffen ausgesetzt sind, haben Fehlermeldungen absolut nichts zu suchen.
    Ausgenommen sind die sogenannten Http Statusfehler, wie der 404-Fehler (Seite nicht gefunden), wie auch eine allgemeine Meldung – es ist ein Fehler aufgetreten ...

    Alle anderen Fehlermeldungen sollten keinesfalls an den Browser (und somit an potentielle Hacker) ausgegeben werden.
    Fehlermeldungen sind teilweise so aussagekräftig, dass sie nicht nur verraten welches Betriebssystem, welche Programmiersprache und welche Datenbank verwendet wird, es werden auch noch Hinweise auf fehlerhafte Variablen, falsche Werte usw. usw. ausgegeben.


    Hinzu kommt das Hacker Fehler provozieren und dann über die Fehlermeldung detailierte Infos erhalten. Insbesondere bei MySQL Injektions hat der Hacker bei so detaillierten Fehlermeldungen ein leichtes Spiel.


    Wenn dann auch noch ein CMS System, ein eShop, ein Forum ... installiert wird,  potenziert sich das Problem noch, da hier Schwachstellen allgemein bekannt sind und sich schnellstens in der Szene verbreiten.

    Goggle'n Sie einmal nach "Sicherheitslücke Wordpress" (nur um mal ein Besipiel zu nennen).

    Jedem Hacker (MySQL Injektion usw.) würde dann detailliert angezeigt wo genau der Fehler liegt und welche Variable er noch für seine Hackangriffe anpassen muss ...

    Da bei den am weitesten verbreiteten Systemen (als Beispiel sei hier einmal Wordpress genannt)  Fehler und Schwachstelle allseits bekannt sind - hat jetzt jeder Hacker leichtes Spiel !!!

    Noch einfacher kann man es den Angreifern wirklich nicht mehr machen ...


    Genau aus diesen Grund sind die direkten ONLINE Fehlermeldungen auch deaktiviert !

    Und aus eigener Erfahrung wissen wir genau das seitens des Webmasters eine eimal aktivierte Fehlermeldung NIE wieder deaktiviert wird !!!


    Hinzu kommt das die direkte Fehlerausgabe auch überhaupt nicht notwendig ist – Eine viel detailliertere Fehlermeldung finden Sie im error.log