17 Foren, eine Userdatenbank?
Hallo alle zusammen,
im Moment planen wir einen größeren Zusammenschluss von Internetforen und haben uns überlegt wie wir uns miteinander verbinden könnten. Foren zusammenführen wollen wir aufjedenfall nicht, sondern einfach in einem großen Partnernetzwerk den Benutzern erlauben mit nur einem Account sich in allen unseren Projekten, Diensten anzumelden ohne weitere Anmeldung.
Problem, diese 17 Foren/Seiten und Co. sind voneinander getrennt. Also auf verschiedenen Servern und nun überlege ich mir ob es nicht möglich wäre aus allen Scripten die Usertabellen (im Moment noch mySQL) rauszubauen und auf einem externen Server der nur für die Accounts zuständig wäre einzufügen und dann eben extern ansprechen zu können.
Der Umbau der PHP-Scripts (Systeme) ist kein Problem und eine allgemeine Usertabelle für alle Scripte zu bauen ist für uns auch nicht weiter schlimm. Nur ist die Frage, lohnt sich dies auf mySQL zu realisieren oder ist die Freigabe für externen Zugriff eher gefärlicher?
AW: 17 Foren, eine Userdatenbank?
Hallo,
ich nehme an, dass du etwas XAMPP geschädigt bist. :-)
Nein, mal iim ernst, ist überhaupt kein Problem denn: Auf die MySQL Datenbank kann man ja (hoffentlich) nur mit Passwort zugreifen. Von daher ist die Sache abgesichert. Wir haben einen Linux Rechner mit mysql und nem postgre sql server rennen, der freigaben von überall her hat, dass ist schon okay.
Das problem ist wohl ehr PHP. PHP ist für sowas eh mist, aber ich versuche es mal zu erklären.
Wenn der browser einen seite vom Webserver requestet, wird dieser quellcode vor dem verschicken an PHP weitergereicht. Das heißt, als erstes, das PHP immer (egal wie oft man die seite aufruft) die datei von oben bis unten abgearbeitet wird (halt interpretermäßig). Das heißt du hat keine Persistenz der mysql objekte- Das macht sich sehr in der Geschwindikeit bemerkbar...
Der user ruft die seite auf. PHP versucht eine verbindung aufzubaun, das heißt socket laden, adresse suchen, ein dreierhandshake aufbauen, verbindung steht ... dann wird sich mit username und passwort angmeldet und erst dann, gehen die abfragen los. Dieser vorgang dauert sehr lange. D.h. zu localhost ist das kein problem, aber wenn die ganzen anmeldungs udn handshakedaten erst durchs netz geschleift werden, könne hier zeiten von bis zu 2 sekunden entstehen. Du musst betrachen, dass in diesen 2 Sekunden noch KEINE nutzdaten ausgetauscht wurden. Die nutzdaten werden zwar schnelle geschaufelt, das dauert aber trotzdem ne zeit.
Die moral der geschichte: Ja es geht, aber du musst die zugriffe auf die datenbank minimieren. also am besten nur eine abfrage und alle daten die du nochmal brauchst temporär in eine localhost DB schreiben. Alternativ kannst du auch eimne anständige websprache benutzen, wie JAVA oder C#/ASP. da hast du eine persistenz. D.h. Der server stellt ein objekt zur verfügung, was die verbinsung zur datenbank permanent aufrecht erhält. Die verbinsung muss also nur einmal aufgebaut werden. Außerdem ahst du da die möglichkeit, sitzungsspezifische daten lokal auf dem webserver zu speichern, also ohne datenbank, dadurch machst du nur beim login die abfrage schaufelst alle daten rüber in den lokalen sitzungs content und benötigst während der ganzen sitzung die Datenbank nicht nochmal. Das ist unteranderem auch der grund, wieso php foren so extrem langsam sind, wähend seiten wie ilove.de, die 2 millionen mehr datensätze haben, so extrem schnell sind.
Mal so nebenbei: die DB arbeitet intern mit B-Bäumen und TOP-Down 2-3-4 Bäumen, deswegen sind sie schneller also files die man selber anlegt und ausließt. Diese geschwindingkeitsvorsprung, sollte man, wenn möglich nicht durch, dezentralisierung zerstören.
Schöne Grüße aus Weimar,
Marc
AW: 17 Foren, eine Userdatenbank?
ich hab mal was ähnliches gemacht
5 eshops mit einer zentrallen mysql userdatenbank und 5 getrennten mysql datenbanken für die produkte usw alles in php. die perfomace ist echt gut allerdings muss ich dazu sagen alles befindet sich auf 127.0.0.1 somit bleiben die handshakes auf externe server weg
AW: 17 Foren, eine Userdatenbank?
Die Handshales fallen nicht weg, nur ist der Aufbau einer logischen TCP verbindung, mit den ACKS, im lokalen halt einfacher, als im netz. Das fängt bei den DNS Abfragen an und hört bei der Packetzuteilung auf.
Die Performance kann gut sein, wenn man sich bei der Abfrage aufs login begrenzt. Eine Session Tabelle aber beispielsweise auf einem remoteserver auslagern grenzt an selbstmord. Hier bietet php einfach nicht die nötige persistenz.
AW: 17 Foren, eine Userdatenbank?
Nun, an das temporäre speichern des Benutzers pro Login habe ich auch schon gedacht und es soll ja nur bei Logins/Outs sowie Benutzeränderungen dann auf den UserServer zugegriffen werden.
Meine größte Sorge besteht bei dem Thema Sicherheit zum Thema offene mySQL Datenbank. Denn ich höre immer wieder das man einen mySQL Server immer auf localhost begrenzen soll, da dies sicher sei.
Warum aber? Wo ist die Lücke wenn man einen mySQL Server nicht auf localhost begrenzt? Warum machen darum soviele Wind?
Ebenfalls ist eine Sorge die ich habe, die Frage: Wie sichere ich es davor ab das nicht wer nachher versucht mit gefälschten temporären Daten auf den Foren einzuloggen?
AW: 17 Foren, eine Userdatenbank?
Die die den Wind machen, die in PHP nur mysql_connect und mysql_query kennen, und da sie nicht mit Fachwissen pranzen können, nehmen sie sich eben irgend so ne "sicherheitslücke" uind latschen darauf rum. das sind solche Experten die nen haufen rum reden, aber selber ihrn mysql server als root laufen haben. (sofern das noch geht .. :-) )
Es gab in einer version mal nen bug, dassd du mit gefälschten handshakes man sich zugang erschleichen konnte ... jedoch nur wenn die host angabe korrekt war. in deinem beispiel, hätte sich also rein theoretisch ein fremder einloggen können, während bei localhost es keine probleme gegeben hätte. Aber sowas sind ausnahmen.- Gleich nach bekanntgabe des bugs wurde ee gefixt und alle administratoren wurden angehalten mysql up-zu-daten.
Die zweite Frage verstehe ich leider nicht.
Noch ne anmerkung: Einige Datenbanken haben garnicht diese Host Abfrage, sie funlktionieren nur mit username - passwort. Und diese Datenbanken sind sogar "pürofessioneller" als mysql. Aber bis zum semiprofessionellen bereich reicht mysql voll aus.
Ach ja und nochwas: In dieser Diskussion sieht man mal wieder schön die aufgabe eines serveradministrators. Serveradmin ist ein full-time job und total unbeliebt. da machen sich manche den Kopf wegen angeblichen Sicherheitslücken, speichern aber passwörter in plain text oder führwen datenabnken als root aus :-)
Schöne grüße aus Weimar
Marc
.
.
.
EDIT (autom. Beitragszusammenführung) :
.
Ach ja, kein wort zu RS fehlern ... war garde 10 Stunden arbeiten :-)