Sven Rautenberg: Rechte mit PHP und MySQL Passwörtern

Beitrag lesen

Moin!

habe ein kleines Problem mit der Sicherheit.

...ein unlösbares Problem.

Wenn man ein PHP Script schreibt, dass Verbindung zu einer MySQL Datenbank aufnimmt, dann muss man ja die Passwörter für MySQL im Quelltext der PHP Datei schreiben. Damit der Browser die Datei auch lesen kann, sind die Rechte der "Others" ja auch auf Read. Somit kann aber jeder User auf der Maschine die Datei mit einem Texteditor auslesen.

Damit der Webserver (und nicht der Browser!) die Datei lesen kann, muß er zumindest Leserechte haben. Da ist es ziemlich egal, ob er nun in deiner Gruppe Mitglied ist oder nicht. Denn jeder andere User kann ein PHP-Skript schreiben, welches deine Passwörter ausliest - dieser Zugriff wird als User "Webserver" erledigt, und der muß zwingend lesen können.

Dieses Problem ist nicht wirklich gut in den Griff zu bekommen bei PHP. Es gibt den safe-mode, bei dem gewisse Operationen unterbunden werden können. Dazu könnte beispielsweise ein Öffnen von Dateien außerhalb des Verzeichnisbaumes des jeweiligen Users gehören, was dann einfach verboten wird.

Im Prinzip müßte es einen Mechanismus geben, der alle deine PHP-Skripte unter deiner User-ID ausführt (und die anderer User unter deren User-ID). Dann könntest du die Rechte deiner Dateien auf 600 oder 400 stellen und wärest vor Mitlesern sehr sicher. Aber sowas geht mit PHP leider nicht.

Die potentielle Sicherheitslücke mußt du wohl oder übel hinnehmen, oder dir einen Hoster suchen, der sowas nicht ermöglicht. Wahlweise kannst du dir auch einen ganz eigenen Server mieten, auf dem du dann tun und lassen kannst, was du willst. Die Abwesenheit von fremden Usern bedeutet natürlich auch mehr Sicherheit.

- Sven Rautenberg

--
Signatur oder nicht Signatur - das ist hier die Frage!