Moin!
wer von Euch hat das Rechtesystem von MySQL in Verbindung mit der PHP-API schon mal voll ausgereizt?
Ich frage mich, mit welchem Sinn das passieren sollte.
Sicherlich ist es schlau, je Projekt und/oder Website-VHost-User eigene DB-Zugänge zu vergeben, um die Möglichkeiten des gegenseitigen unberechtigten Zugriffs zu unterbinden.
Das aber innerhalb eines Projektes noch weiter auszureizen scheint mir nicht so ganz einsichtig zu sein. Solche Rechtevergabe ist schlau, wenn man tatsächlich mehrere nicht miteinander kommunizierende DB-User (Menschen mit ihrem CLI-Interface) hat, welche per SQL-Kommandos die Datenbank benutzen.
Da aber bei PHP der Webserver zwingend lesenden Zugriff auf alle PHP-Dateien, als auch die mit den Zugangsdaten zur DB, hat, wäre es im Angriffsfall nur eine Frage der Zeit, bis der Angreifer nicht nur den eingeschränkten Nur-Lese-Account gefunden, sondern auch den Vollzugang zur Datenbank aufgespürt hat und einsetzt.
Wirklich einsetzbar und einen echten Sicherheitsvorteil bringen würde so ein System also nur in Szenarien, in denen
a) der DB-Server separat auf einer eigenen Maschine untergebracht ist
b) Skripte mit unterschiedlichen DB-Zugriffsrechten ebenfalls auf unterschiedlichen Maschinen untergebracht sind, oder zumindest extrem gegen gegenseitiges Lesen abgeschottet.
Beispielsweise wenn ein öffentliches DB-Frontend nur lesen darf, und die Administration aus dem gesicherten Intranet über ein weiteres Frontend stattfindet.
Was sollten man lieber lassen und was funktioniert gut, und vor allem _wie_ funktioniert es.
Ich würde die Funktionsfähigkeit derartiger Rechtesysteme innerhalb der DBMS als ausgezeichnet bezeichnen wollen. Und "wie" es funktioniert, sollte dich als DB-Benutzer nicht weiter interessieren - das macht die Datenbank schon irgendwie, und das Interface dafür ist SQL.
- Sven Rautenberg
My sssignature, my preciousssss!