Ich arbeite mit der Systemadministration an einer Universität und bin nur auf etwas gestoßen, was wahrscheinlich üblich ist, aber für mich ein ziemlicher Schock war.
Alle public_html-Verzeichnisse und Webbereiche werden auf afs mit Leseberechtigungen für die Webserver gespeichert. Da Benutzer PHP-Skripte in ihrer public_html haben dürfen, bedeutet dies, dass sie über PHP (und die wichtigsten Webdateien!) Auf die Dateien der anderen zugreifen können.
Dies macht nicht nur jeden .htaccess-Passwortschutz völlig unbrauchbar, sondern ermöglicht es Benutzern auch, PHP-Quelldateien zu lesen, die MySQL-Datenbankkennwörter und ähnliche vertrauliche Informationen enthalten. Oder wenn sie feststellen, dass andere Personen Verzeichnisse haben, in denen die Webserver Schreibzugriff haben (z. B. für persönliche Protokolle oder zum Speichern übermittelter Formulardaten), können sie Dateien in diesen Konten speichern.
Ein einfaches Beispiel:
<?
header("Content-type: text/plain");
print file_get_contents("/afs/example.com/home/smith/public_html/.htpasswd");
?>
Ist das ein häufiges Problem? Und wie löst man das normalerweise?
AKTUALISIEREN:
Danke für die Eingabe. Leider scheint es keine einfache Antwort zu geben. In einer großen gemeinsamen Umgebung wie dieser sollten Benutzer wahrscheinlich nicht so viel Auswahl haben. Der beste Ansatz, den ich mir vorstellen kann, ist, "open_basedir" in der Hauptkonfiguration für alle "public_html" -Verzeichnisse festzulegen, suphp auszuführen und nur sauberes PHP zuzulassen (keine CGI-Skripte, externe Befehle mit Backticks usw. ausführen).
Eine solche Änderung der Richtlinie würde jedoch eine Menge Probleme verursachen und möglicherweise dazu führen, dass Benutzer ihre Mistgabeln greifen und uns verfolgen ... Ich werde dies mit meinen Kollegen besprechen und hier aktualisieren, wenn wir eine Entscheidung über die Änderung des Setups treffen.
open_basedir
unten stehende Lösung auf gemeinsam genutzten Produktionshosting-Systemen verwendet, aber wir haben alle in ihren eigenen vhost aufgeteilt - Ich bin mir nicht sicher, ob es für einzelne Verzeichnisse funktioniert ...