PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : MySQL-Paßwort vor fremden Zugriff schützen



Gobble-G
02.06.05, 11:30
Hallo,
ich weiß nicht, ob das hier das richtige Forum ist, aber ich versuch' es mal. Ich habe schon lange danach gegoogelt, aber nichts gefunden.

Wir haben an der Uni mehrere Unix-Netze. Darin laufen unter anderem auch ein Apache 1.3.irgendwas mit PHP-Modul und ein MySQL-Server. Wenn ich nun mittels PHP Skript für den DB-Zugriff schreibe, muß ich die Zugangsdaten für den MySQL-Server in einer Datei speichern. Diese kann ich mittels den einfachen Zugriffsrechten für den Zugriff Dritter sperren. Zusätzlich kann ich mit den ACL-Rechten diese Datei für den Web-Server wieder zugänglich machen, damit dieser damit arbeiten kann.
Allerdings ist es auch möglich, in PHP Skripte zu schreiben, mit denen man die Zugangsdateien aller anderen User im Netzwerk auslesen kann. Somit habe ich Zugriff auf Datenbanken, die mir eigentlich vorenthalten bleiben sollten.

Wie kann ich also die Zugangsdaten so speichern, dass nur meine Skripte via Web-Server damit arbeiten können und alle anderen davon ausgeschlossen sind?

Vielen Danke schonmal!

Gruß, Gobble-G

marce
02.06.05, 13:50
Allerdings ist es auch möglich, in PHP Skripte zu schreiben, mit denen man die Zugangsdateien aller anderen User im Netzwerk auslesen kann. Somit habe ich Zugriff auf Datenbanken, die mir eigentlich vorenthalten bleiben sollten.
wie meinst Du das?

Kannst Du mit den php-Scripten die anderen Scripte im Quelltext auslesen? Dann ist es ein Rechteproblem des Dateisystems.

Kannst Du mit den php-Scripten die Zugangsdaten aus der MySQL auslesen? Dann ist es ein Rechteproblem der DB.


Für beides gibt es Lösungen...

tschloss
02.06.05, 14:20
wie meinst Du das?

Kannst Du mit den php-Scripten die anderen Scripte im Quelltext auslesen? Dann ist es ein Rechteproblem des Dateisystems.


Interessant. Ein PHP-Skript läuft ja quasi mit den Rechten des Webservers. Da der Zugriff auf andere PHP-Dateien hat, müßte man die auch als File lesen können.

Da muß man wohl mit virtuellen Servern und disjunkten Document Roots etwas Trennung reinbringen.

Und zusätzlich sollte bei der DB sollte auch jedes PHP-Programm einen möglichst restriktiven DB-User nutzen und nicht mit dem DB-root ;)

Greetz
Thomas

Gobble-G
02.06.05, 15:28
@marce: Ich kann mittels PHP die Dateien auslesen, in denen die Zugangsdaten drin stehen.

@Richtig, der WebServer muss ja zugreifen duerfen, sonst koennten sich die Skripte auch nicht automatisch im DBMS einloggen. Ich glaube, deine Loesung geht in die richtige Richtung. Allerdings habe ich noch nichts von "virtuellen Servern" und "disjunkten Document Roots" gehoert. Konntest du mir das etwas naeher erklaeren? Kann ich da als nonRoot was machen? Ich bin schliesslich nur Student und kein Admin.

Uebrigens hat jeder Student einen stark beschraenkten MzSQL-Account. (Also nichts mit Root...)

MfG, Gobble-G

yankeeCGN
02.06.05, 15:36
Es gibt da doch von apache 'ne lösung, dass jeder User in seinem Homepfad einen Ordner (default: public_html) hat. Auf den können andere Skripte dann nicht zugreifen.

Gobble-G
02.06.05, 15:41
Es gibt da doch von apache 'ne lösung, dass jeder User in seinem Homepfad einen Ordner (default: public_html) hat. Auf den können andere Skripte dann nicht zugreifen.
Hier hat jeder dieses public_html Verzeichnis und es geht trotzdem...

marce
02.06.05, 21:21
schau mal unter

http://de2.php.net/features.safe-mode

nach - da ist wohl das php recht "wohlwollend" eingerichtet... - oder halt den Apache entsprechend einrichten, dass er nur auf das VZ des users darf.

Du sprichst von Uni - hast Du überhaupt Zugriff auf die php.ini bzw. die httpd.conf? Wenn nicht bekommst Du die gewünschten Beschränkungen evtl. über eine .htaccess hin...

tschloss
02.06.05, 22:57
@marce: Ich kann mittels PHP die Dateien auslesen, in denen die Zugangsdaten drin stehen.

@Richtig, der WebServer muss ja zugreifen duerfen, sonst koennten sich die Skripte auch nicht automatisch im DBMS einloggen. Ich glaube, deine Loesung geht in die richtige Richtung. Allerdings habe ich noch nichts von "virtuellen Servern" und "disjunkten Document Roots" gehoert. Konntest du mir das etwas naeher erklaeren? Kann ich da als nonRoot was machen? Ich bin schliesslich nur Student und kein Admin.

Uebrigens hat jeder Student einen stark beschraenkten MzSQL-Account. (Also nichts mit Root...)

MfG, Gobble-G

Mit "virtuellen Servern" kann man erreichen, dass jede Webapplikation ihr eigenes HTML-Verzeichnis hat und aus diesem auch nicht herauskommt. Das heißt, dass der virtuelle Server einer bestimmten Applikation auch nicht im Verzeichnis baum umherspazieren kann und Nachbar-Anwendungen ausspionieren.
That´s it.
Aber diese virtuellem Server müssen in der Tat von einem "Superadmin" eingerichtet werden, der Zugriff auf die globale httpd.conf hat.

Wäre schilmm wenn das nicht ginge. Was sollten dann die ganzen Web-Hoster machen? Für jeden 0,99 Euro Kunden einen eigenen Server einrichten?

Thomas

Gobble-G
03.06.05, 10:36
Hallo,
danke für die Antworten. Jetzt weiß ich ungefähr, in welche Richtung ich arbeiten muß.
An die Konfigurationen komme ich natürlich nicht ran. Ich könnte höchstens einen Admin bitten, da was zu drehen. Aber man darf nicht erwarten, dass die gleich wissen, was man überhaupt möchte. Außerdem laufen ja auch noch verschiedene WebServer auf den selben public_html-Verzeichnissen. Das wäre für die bestimmt wieder zu umständlich...
Aber die Sache mit der .htaccess werde ich mir angucken. Einfache Sachen habe ich damit schon laufen. Vielleicht kriege ich es hin, dass nur meine Skripte auf die Zugangsdaten zugreifen können.

Vielen Dank!

MfG, Gobble-G


PS: Ich wundere mich, dass bei über 15000 Studenten und Mitarbeitern, die im Rechenzentrum einen Account haben, noch keiner auf dieses Problem aufmerksam gemacht hat. Schließlich lassen sich die Daten vieler großer Internetprojekte auslesen. Damit läßt sich doch Schaden anrichten! Das geht mir nicht in den Kopf.

marce
03.06.05, 10:40
mit den .htaccess kannst Du nur einstellen, wie deine php-Umgebung sich verhalten soll - wenn ein anderer bei sich das nicht drin hat, dann kann er weiter auf Deine Scripte zugreifen...

Globale Geschichten diesbezüglich gehören in die allg. httpd.conf oder in die php.ini - vor allem das, was Sicherheit angeht...

Gobble-G
03.06.05, 10:46
mit den .htaccess kannst Du nur einstellen, wie deine php-Umgebung sich verhalten soll - wenn ein anderer bei sich das nicht drin hat, dann kann er weiter auf Deine Scripte zugreifen...Hm, stimmt auch wieder. So rum geht es ja dann trotzdem...


Globale Geschichten diesbezüglich gehören in die allg. httpd.conf oder in die php.ini - vor allem das, was Sicherheit angeht...Dann sollte ich vielleicht doch mal einen Admin meines Vertrauens *g* ansprechen.

tschloss
03.06.05, 11:04
mit den .htaccess kannst Du nur einstellen, wie deine php-Umgebung sich verhalten soll - wenn ein anderer bei sich das nicht drin hat, dann kann er weiter auf Deine Scripte zugreifen...

Ist es nicht umgekehrt: die .htaccess Datei regelt, wer auf DIESES Verzeichnis zugreifen darf?

Der Nachteil ist aber doch auch, dass das eine Authentifizierung auslöst, also für öffentliche Anwendungen nicht geeignet ist, oder?

Greetz
Thomas

marce
03.06.05, 11:08
'ne Authentifizierung gibt's nur, wenn Du das auch einstellst. Recht viele Dinge kann man in der .htaccess einstellen - empfehle dazu die Apache-Doku ;-)

z.B. kannst Du dort auch rewrites und ähnliches definieren, Änderungen am php-Verhalten einstellen (z.B. für ein spezielles VZ ein register_globals auf on) ...

phoenix22
03.06.05, 11:09
Ist es nicht umgekehrt: die .htaccess Datei regelt, wer auf DIESES Verzeichnis zugreifen darf?

Der Nachteil ist aber doch auch, dass das eine Authentifizierung auslöst, also für öffentliche Anwendungen nicht geeignet ist, oder?

Greetz
Thomas

Nein, bitte kein Halbwissen verbreiten ;) Du kannst in der .htaccess eine Authentifizierung einstellen, aber du musst es nicht. Stattdessen kannst du globale Konfigurationsdirektiven der httpd.conf für das Verzeichnis durch die .htaccess überschreiben (soweit das in der httpd.conf zugelassen ist).

tschloss
06.06.05, 09:34
Nein, bitte kein Halbwissen verbreiten ;) Du kannst in der .htaccess eine Authentifizierung einstellen, aber du musst es nicht. Stattdessen kannst du globale Konfigurationsdirektiven der httpd.conf für das Verzeichnis durch die .htaccess überschreiben (soweit das in der httpd.conf zugelassen ist).

Aha. :ugly:
Toll, dass man mit .htacces mehr und anderes machen kann als Autorisierung. Aber darum ging es eigentlich nicht. Aber danke, dass du dein Zusatzwissen nun irgendwie losgeworden bist.

MIr ging es um die Aussage von Marce weiter unten. Dort entsand für mich der Eindruck, dass andere Site-Betreiber mit htaccess arbeiten müßten, um "meine" Site zu schützen.
Aber nach


These directives may be placed in a .htaccess file in the particular directory being protected

ist es umgekehrt: ich kann "meine" Dateien schützen indem ich eine entsprechende ACL in mein Verzeichnis einfüge. Ist das Halbwissen?

Außerdem wollte ich den Threadowner darauf hinweisen, dass das für öffentliche Anwendungen nicht viel nutzt.

Greetz
Thomas