Klaus: safe_mode = Off ?? Wie macht ihr es?

Beitrag lesen

Hallo,

Bekanntester Fall ist das Anlegen einer Datei in einem Verzeichnis, dass duech FTP angelegt wurde. Das Script wurde ebenfalls durch FTP hochgeladen. Das Anlegen einesr Datei klappt noch, da hier nur die Rechte aus dem Verzeichnis gelten (Skript und Verzeichnis habe denselben Owner) aber das Ändern oder Löschen der Datei klappt dann nicht mehr, weil hier plötzlich der Owner der Datei (zB. WWWRUN) nicht mehr übereinstimmt mit dem des Scriptes oder des übergeordneten Verzeichnisses.

Also wenn man mit PHP eine Datei anlegt, dann hat dieses afaik den Owner wie der User der PHP ausführt.
Dementsprechend kann der PHP Script diese selbst angelegte Datei beliebig verändern.

Bekannt ist soetwas bei Template Engines, diese legen die fertig geparsten Templates in einem Cache Ordner und können diese natürlich auch entsprechend verändern oder löschen.
Ein Problem welches auftreten kann, ist dass die Template Engine keine Rechte für den Cache Ordner hat (auch mittels FTP hochgeladen), allerdings ein gut geschriebenes Script überprüft dieses und bittet den User die Rechte für den Ordner entsprechend zu setzen, z.B. 0777, schon läuft das Script.

Evt. hab ich dich auch missverstanden, wo der safe mode etwas nervig ist, wenn ein PHP Script eine per FTP hochgeladene Datei verändern möchte, z.B. in eine Config-Datei die Zugangsdaten für die MySQL Verbindung eintragen möchte.
Aber auch hier wieder, solch ein Script sollte vorher die Schreibrechte prüfen (is_writeable) und ggf. den Nutzer bitten, die Rechte hochzuseten.

Wie gesagt, gut geschriebene Scripts überprüfen diese und nach Änderung der Rechte laufen diese auch einwandfrei.

Persönlich finde ich es auch gut, wenn man erst explizit die Rechte für solche Dateien ändern muss.
Oftmals lädt man auch fremden Code hoch, z.B. ein Board (oder Forum), Gästebuch, Newsletterscript, CMS oder was auch immer, und dort finde ich es schon okay, dass solche Scripts nicht beliebig andere Dateien überschreiben können, sondern ich erst explizit Schreibrechte vergeben muss.

Auch ist dies ein gewisser Schutz vor Code-Injections, so kann afaik eine erfolgreiche Code injection nicht den Admin-Login so manipulieren, dass die Passwörter irgendwo in Klartext gelogt werden, natürlich solange in die admin login Datei nicht irgendwelche Dateien mit den Rechten 777 eingebunden werden.

MFG