frankx: PEAR - safe_mode / open_base_dir - Sicherheit

Hellihello,

Auf dem virtuellen Strato-Server (Suse 9.5 - Plesk) ist PHP5 nachinstalliert. Das läuft auch. Als Pfad zur php.ini - Datei gibt phpinfo() "/etc/php5" an. Da es das Verzeichnis "/etc/php5" nicht gab, habe ich es auf dem virtuellen Server angelegt und dort eine php.ini reingepackt. Die habe ich bestückt mit

  
include_path=".:/usr/share/php"  

um die PEAR-Klassen in /user/share/php einbinden zu können.

Da die Pear-Klassen in /usr/share/php immer noch nicht eingebunden werden konnten, weil eine "open_base_dir-Direktive" dem wohl widersprach, habe ich das in der

  
/var/www/vhosts/example-subdomain/conf/httpd.include  

dieselbigen dort auskommentiert. Sie hatten vorher den Wert

  
php_admin_value open_base_dir=/var/www/vhosts/example-subdomain/httpdocs:/tmp"  

Trotz der o.g. Löschung der open_base_dir-Anweisungen trat jetzt ein neuer Fehler auf:

Warning: main(): SAFE MODE Restriction in effect. The script whose uid is 10001 is not allowed to access /usr/share/php/DB.php owned by uid 0 in blablabla...

Daraufhin habe ich den safe_mode in der o.g. vhosts- httpd.include ausgeschaltet:

  
php_admin_flag safe_mode off  

Jetzt gehen auch die Pear-Klassen. Frage: Habe ich mir mit dieser Aktion eine Sicherheitslücke aufgerissen und/oder wie geht das anders zu machen?

Dank und Gruß,

frankx

  1. echo $begrüßung;

    php_admin_flag safe_mode off
    Habe ich mir mit dieser Aktion eine Sicherheitslücke aufgerissen und/oder wie geht das anders zu machen?

    Wenn du der einzige Benutzer auf deinem Server bist, ist der Safe Mode nicht besonders sinnvoll. Außerdem fällt er in PHP6 sowieso ganz weg. Wenn du deinen Scripten den Zugriff außerhalb des ihnen zugewiesenen Bereichs verbieten willst, nimm open_basedir. Wenn du die Ausführung bestimmter Funktionen unterbinden möchtest, nimm disable_functions und disable_classes. Ansonsten: Handbuch-Kapitel Safe Mode.

    echo "$verabschiedung $name";