Chat-Website wohin mit allen Nutzerdaten ?

Elmorion

Cadet 1st Year
Registriert
Dez. 2018
Beiträge
11
Guten tag!

Wie in der Titel schon verrät, will ich eine Chat-Website erstellen, mit Profilen und recht genauer Beschreibung der einzelnen User.
Bin jetzt an der Registrierung dran und frage mich wohin ich alle Daten speichern soll ?
also E-Mail, Passwort, Username, Vor-/Nachname etc. speicher ich momentan in mysql..
Nur speziellere Sachen wie, Vorlieben, Haarfarbe, Beschreibungen ( also in eigenen Worten ein kleiner text) usw. weiss ich nicht wo hin damit ^^
Ich hatte mir gedacht diese in einer txt zu speichern bzw php und diese dann ebenfalls in die mysql zu speichern.

aber ich glaube es gibt andere deutlich bessere lösungen ?

Ich hoffe jemand kann mir da weiter helfen ^^
schon mal danke im voraus!

wenn ihr mehr Infos brauchen solltet, schreibt das bitte! ich bin neu in dem Thema^^
 
Wenn du so viele personenbezogene Daten speichern und verarbeiten willst, solltest du dich zunächst mit der DSGVO und den möglichen Konsequzenzen bei einem Verstoß vertraut machen.

Wenn du den Chat dann immer noch aufbauen willst, solltest du dich fragen ob du das alles selbst umsetzen kannst oder nicht doch lieber Profis dafür engagierst.

Und um noch kurz auf deine Frage einzugehen: Normalerweise wir all das in einer Datenbank gespeichert, über deren Struktur man sich vorab sehr viele Gedanken machen sollte, damit anschließend die Performance bei Anfragen stimmt. Noch mehr Gedanken sollte man sich wegen der Absicherung der darin gespeicherten Daten machen (Verschlüsselung, Passworthashes, etc.).
 
  • Gefällt mir
Reaktionen: I'm unknown
Du speicherst einfach alle Daten in der Datenbank. Wo ist das Problem?

Oder wo ist deiner Meinung nach der Unterschied zwischen einem Vornamen und der Haarfarbe?
Es gibt keinen
 
Elmorion schrieb:
Nur speziellere Sachen wie, Vorlieben, Haarfarbe, Beschreibungen ( also in eigenen Worten ein kleiner text) usw. weiss ich nicht wo hin damit ^^
Aufpassen solltest du vor allem bei persönlich besonders schützenswerten Informationen, die sind durch die DSGVO besonders geschützt. Wenn deine Seite einen kommerziellen Hintergrund hat könnte das im Fall der Fälle sehr unangenehm für dich werden - und du wirkst auf mich wie ein Einsteiger auf dem Gebiet (nicht böse gemeint, jeder fängt mal an).
 
  1. An die DSGVO denken
  2. Passwörter Salten+Hashen
  3. IMMER HTTPS verwenden
  4. SQL Injections verhindern
  5. Den Freitext kannst du auch in deiner Datenbank speichern
  6. Nochmal an die DSGVO denken
Falls dir davon irgendwas nichts sagt, dann lass die ganze Sache lieber
 
  • Gefällt mir
Reaktionen: tony_mont4n4
Elmorion schrieb:
Ich hatte mir gedacht diese in einer txt zu speichern bzw php und diese dann ebenfalls in die mysql zu speichern.
Die Leute über mir haben es ja schon angesprochen, aber wieso hast du dir das gedacht bzw. wie bist du zu diesem Ergebnis gekommen? Wieso der Umweg über eine Text-Datei?
Oder anders gesagt: Was hält dich davon ab auch das direkt in die Datenbank zu speichern?
 
dasbene schrieb:
  1. An die DSGVO denken
  2. Passwörter Salten+Hashen
  3. IMMER HTTPS verwenden
  4. SQL Injections verhindern
  5. Den Freitext kannst du auch in deiner Datenbank speichern
  6. Nochmal an die DSGVO denken
Falls dir davon irgendwas nichts sagt, dann lass die ganze Sache lieber

also die Seite soll vollkommen Gratis sein.
und mit der DSGVO, alle anderen Seiten wie, facebook und co., benutzen ja auch die ganzen Daten, der User muss damit nur einverstanden sein. ( also so habe ich das bisher immer erlebt ? )

Ja das man einen Freitext dort speichern kann, ist mir bewusst ^^
Ich dachte nur das man einen, sagen wir mal 300 Worte text, nicht in eine Datei auslagert und diese dann speichert ?
aber wenn man das auch anders machen kann hättest du meine frage beantwortet ^^
danke
und mit der DSGVO muss ich mir dann nochmal genauer angucken! wird hier ja echt häufig genannt!

wie Siehts denn aus mit Spenden ist das dann schon kommerziell ?
ich denke ja nicht da es für die Allgemeinheit ist und die spenden Ausschlislich die Server kosten decken würden..
weil Werbung habe ich gelesen soll direkt als kommerziell angesehen werden ^^

und ja ich bin ein kompletter Anfänger aber ich mag Herausforderungen!
Ergänzung ()

Mihawk90 schrieb:
Die Leute über mir haben es ja schon angesprochen, aber wieso hast du dir das gedacht bzw. wie bist du zu diesem Ergebnis gekommen? Wieso der Umweg über eine Text-Datei?
Oder anders gesagt: Was hält dich davon ab auch das direkt in die Datenbank zu speichern?

Nunja wie in meiner letzten Antwort, dachte ich das es zuviel Text sei ^^
und man das anders lösen würde ^^
aber anscheinend soll man einfach alles dort ablagern.
sprich das Profilbild und evtl. Posts von den Usern ( Bilder oder Bilder mit text ) auch dort ablagern ?
 
Elmorion schrieb:
sprich das Profilbild und evtl. Posts von den Usern ( Bilder oder Bilder mit text ) auch dort ablagern ?
Kann man theoretisch, würde ich aber nicht raten da Datenbanken in der Regel nicht gut mit Binär-Daten umgehen (was die Kompression angeht vor allem).
Da gibt es 2 Möglichkeiten: 1. Die Bilder als base64 encoden und daher als Text in der Datenbank ablegen, die können dann auch direkt als <img src"..." /> verwendet werden. 2. Die Bilder irgendwo als Datei ablegen (wichtig dass das Verzeichnis keine Listung zulässt) und in der Datenbank entweder den absoluten oder relativen Pfad speichern (oder nur eine ID die dann woanders zugeordnet wird).
Die zweite Möglichkeit ist auch die, die die Forensoftware hier verwendet.
 
  • Gefällt mir
Reaktionen: Elmorion
Elmorion schrieb:
und mit der DSGVO, alle anderen Seiten wie, facebook und co., benutzen ja auch die ganzen Daten, der User muss damit nur einverstanden sein.


Wenn das dein aktueller Stand ist, dann gute Nacht...

DU musst alle persönlichen Daten absichern, verschlüsseln und vorhalten.

Bei falscher Handhabung folgen hohe Geldstrafen bis hin zu Haft.

Also einfach mal:" Ich nutze eure Daten, hier Ok klicken!", ist nicht!
 
  • Gefällt mir
Reaktionen: e_Lap und Elmorion
Mihawk90 schrieb:
Kann man theoretisch, würde ich aber nicht raten da Datenbanken in der Regel nicht gut mit Binär-Daten umgehen (was die Kompression angeht vor allem).
Da gibt es 2 Möglichkeiten: 1. Die Bilder als base64 encoden und daher als Text in der Datenbank ablegen, die können dann auch direkt als <img src"..." /> verwendet werden. 2. Die Bilder irgendwo als Datei ablegen (wichtig dass das Verzeichnis keine Listung zulässt) und in der Datenbank entweder den absoluten oder relativen Pfad speichern (oder nur eine ID die dann woanders zugeordnet wird).
Die zweite Möglichkeit ist auch die, die die Forensoftware hier verwendet.

vielen dank für die Antwort!
also möglichkeit 2 wäre dann ein Ordner pro User ? oder einen Ordner füll alle User ?
was mysql angeht bin ich ein kompletter noob was so viele Daten angeht.. bisher nur Namen und E-Mails mal gehabt.
 
Mihawk90 schrieb:
2. Die Bilder irgendwo als Datei ablegen (wichtig dass das Verzeichnis keine Listung zulässt) und in der Datenbank entweder den absoluten oder relativen Pfad speichern (oder nur eine ID die dann woanders zugeordnet wird).
Die zweite Möglichkeit ist auch die, die die Forensoftware hier verwendet.
Diese Variante erlaubt dann aber auch keinen Zugriffsschutz mehr. Ich würde die Bilder nicht direkt von einem Webserver (also z.B. Apache oder Nginx) ausliefern lassen, sondern von der Anwendung, die die Daten vom Dateisystem oder aus einer Datenbank liest. Dann lässt sich auch ziemlich unkompliziert eine - wie auch immer geartete - Zugriffskontrolle einbinden.
 
  • Gefällt mir
Reaktionen: Mihawk90 und Elmorion
Old Knitterhemd schrieb:
Wenn das dein aktueller Stand ist, dann gute Nacht...

DU musst alle persönlichen Daten absichern, verschlüsseln und vorhalten.

Bei falscher Handhabung folgen hohe Geldstrafen bis hin zu Haft.

Also einfach mal:" Ich nutze eure Daten, hier Ok klicken!", ist nicht!

Ja das man die nicht einfach offen rumliegen lassen soll ist mir schon bewusst..

aber ich meine wenn es so viele Seiten gibt die, die Daten verwenden, kann es ja nicht unmöglich sein ^^
aber Trozdem danke für den hinweis !
DIe Seite steht eh noch ganz am Anfang! also muss ich mich natürlich noch viel einlesen und informieren!
Ergänzung ()

benneq schrieb:
Diese Variante erlaubt dann aber auch keinen Zugriffsschutz mehr. Ich würde die Bilder nicht direkt von einem Webserver (also z.B. Apache oder Nginx) ausliefern lassen, sondern von der Anwendung, die die Daten vom Dateisystem oder aus einer Datenbank liest. Dann lässt sich auch ziemlich unkompliziert eine - wie auch immer geartete - Zugriffskontrolle einbinden.

okay vielen dank! dann muss ich mir, sobald Bilder reinkommen, noch einiges durchlesen
 
Elmorion schrieb:
also möglichkeit 2 wäre dann ein Ordner pro User ? oder einen Ordner füll alle User ?
Das kann man machen wie man will, die Struktur kann man sich basteln wie es einem lieb ist.

benneq schrieb:
Diese Variante erlaubt dann aber auch keinen Zugriffsschutz mehr. Ich würde die Bilder nicht direkt von einem Webserver (also z.B. Apache oder Nginx) ausliefern lassen, sondern von der Anwendung, die die Daten vom Dateisystem oder aus einer Datenbank liest. Dann lässt sich auch ziemlich unkompliziert eine - wie auch immer geartete - Zugriffskontrolle einbinden.
Vom Webserver kommt die Auslieferung am Ende immer, die Frage der Zugriffskontrolle muss man sich natürlich immer überlegen. Wie gesagt das Verzeichnis sollte schon mal nicht zugänglich/listbar sein, aber direkten Zugriff auf die Dateien hat man natürlich trotzdem wenn man die URL kennt. Das bedeutet natürlich wiederum, dass die Dateinamen nicht einfach "erratbar" sein sollten. Da gibt es etliche Möglichkeiten das zu machen, bin aber auch nicht auf dem aktuellsten Stand was hier Best-Practice ist. Die einfachste Möglichkeit wäre vmtl. die Variante der base64 Kodierung, denn dann liegen die Dateien nirgendwo. Das hat aber natürlich den Nachteil, dass die ausgelieferte HTML größer wird.
 
  • Gefällt mir
Reaktionen: Elmorion
Wenn du besondere personenbezogene Daten verarbeitest ( speichern ist eine Verarbeitung) ist die Datenschutzfolgeabschätzung Pflicht. Vielleicht lies du erst einmal die EU Datenschutzgrundverordnung bevor du weiter machst....

Nach der DSFA klären sich bestimmte Anforderungen an deine Datenbank von allein.
Für die DSFA ist Pia (privacy impact assessment) von der französchen Datenschutzaufsicht zu empfehlen.
 
  • Gefällt mir
Reaktionen: Elmorion
Medien wuerde ich einfach in nem S3 speicher, Cloudfront CDN davor schalten und gut ist.
 
Wo man die ablegt ist doch erstmal zweitrangig, es geht ja auch darum die entsprechend zu schützen. Und S3 Muss man dazu auch entsprechend einrichten.
 
Elmorion schrieb:
okay vielen dank! dann muss ich mir, sobald Bilder reinkommen, noch einiges durchlesen
Das sind am Ende auch einfach nur Daten. Du kannst die Binärdaten der Bilder auch direkt in MySQL als BLOB ablegen. Wüsste jetzt auch nicht, was die Datenbank damit für Probleme haben sollte. Mir sind keine bekannt nach jahrelanger Nutzung.

Einzige Nachteile wären wohl, dass sämtliche Requests dann von einer Datenbank beantwortet werden und es im schlimmsten Fall dann zu Timeouts für die Benutzer kommt. Dafür muss deine Seite aber auch erst mal eine entsprechende Größe und Verbreitung erreichen. Und selbst falls das passieren sollte, kann man dann immer noch seine Daten umziehen, mehrere Datenbanken benutzen, oder dickere Hardware mieten.

Persönlich nutze ich für Binärdaten inzwischen nur noch MongoDBs GridFS. Das lässt sich auch problemlos auf mehrere Server skalieren. Aber ist halt was ganz anderes als MySQL. Viele neue Möglichkeiten und viele neue mögliche Probleme, derer man sich bewusst sein muss.

Aber auch das Dateisystem ist eine valide Lösung. Hat halt den Nachteil, dass man sich um Load Balancing und Replikation selbst kümmern müsste.

Die Möglichkeiten sind endlos. Aber das Schöne ist ja: Du musst dich jetzt auf nichts für immer festlegen. Man kann auch nachträglich problemlos seine gesamten Daten umziehen, wenn's nötig ist. Also einfach erstmal anfangen und schauen wie's läuft. Und wenn's irgendwann Probleme geben sollte, macht man sich auf die Suche nach einer passenden Lösung.

Mihawk90 schrieb:
Wie gesagt das Verzeichnis sollte schon mal nicht zugänglich/listbar sein, aber direkten Zugriff auf die Dateien hat man natürlich trotzdem wenn man die URL kennt. Das bedeutet natürlich wiederum, dass die Dateinamen nicht einfach "erratbar" sein sollten.
Und schon sind wir bei Security by Obscurity. Ne danke.
Deshalb lieber ein GET /files/FILE_ID und die Anwendung entscheidet, ob ich die Datei lesen darf oder nicht. Ist jetzt auch nicht aufwändiger als ein Verzeichnis in MySQL / Nginx freizugeben.
 
  • Gefällt mir
Reaktionen: Mihawk90 und Elmorion
Mihawk90 schrieb:
Kann man theoretisch, würde ich aber nicht raten da Datenbanken in der Regel nicht gut mit Binär-Daten umgehen (was die Kompression angeht vor allem).
Rate mal, weshalb der Datentyp BLOB eingeführt wurde. Außerdem werden die Bilder sowieso besser vor dem Speichern in der Datenbank komprimiert, da hat eine Datenbank nichts mit am Hut.

Problematisch wird es, wenn die Datenbank/Webseite nicht selber gehostet wird. Da musst man gegebenenfalls mit dem Hoster einen Vetrag bezüglich der Auftragsdatenverarbeitung schließen, soweit sich dieser überhaupt darauf einlässt. Denn sonst ist man nicht in der Lage, den Schutz der Daten einer Datenbank zu gewährleisten, wenn der Server irgendwo in einem Rechenzentrum des Hosters steht.
 
  • Gefällt mir
Reaktionen: e_Lap und Elmorion
Zurück
Oben