Onlinedatenbank absichern

Rajmund

Mitglied
Thread Starter
Mitglied seit
15.04.2006
Beiträge
569
Hallo,

meine Frage dreht sich nicht um SQL im engeren Sinne, sondern es geht eher allgemein um Client<->Webdatenbank.
In meinem Programm (Java), welches lokal auf dem Rechner des Anwenders läuft, gibt es eine Eingabemaske mit drei Feldern (Komponist und zwei für den Namen eines Musikstückes). Der Anwender soll damit musikstückbezogene Daten beschriften können. Damit das schneller von der Hand geht, soll bereits nach der Eingabe weniger Zeichen das Programm Vorschläge einblenden, die sich durch Anklicken übernehmen lassen.

Da ich nun nicht das gesamte Weltrepertoire als Resource jeder Programmdatei mitgeben kann (und das Repertoire stetig wächst), habe ich eine Online-Datenbank (MySQL) eingerichtet, auf die mein Programm via REST-Api zugreift und sich die Vorschläge von dort holt. Das gibt mir die Möglichkeit, die Datenbank kontinuierlich weiter zu füllen und die Benutzer selbst sollen diese Datenbank auch pflegen können: Getätigte Eingaben der Maske werden in diese Datenbank übernommen und dann ggf. anderen Nutzern als Vorschlag angezeigt.
Selbstverständlich gibt es ein Häkchen direkt über der Maske, mit der sich die Funktion deaktivieren läßt. Der Benutzer wird auch darauf hingewiesen, daß er bei aktivierter Onlinefunktion keine privaten Daten eingeben sollte.
Über eine Webseite haben die Benutzer die Möglichkeit, den Datenbestand zu pflegen und fehlerhafte Daten zu korrigieren. Also ein bißchen wie Wikipedia: basiert auf dem Vertrauen, daß die Benutzer nichts Dummes damit anstellen bzw. dass die Mehrheit der Benutzer vernünftig ist und Querschläger selbst ausmerzt.

Nun muß man sich den Fragen stellen, wie man damit umgeht, wenn
-als Eingabedaten belästigende, verleumdende, rassistische Vokabeln eingegeben (und damit anderen Benutzern sichtbar gemacht) werden
-die Datenbank mit sinnlosen Daten zugespamt wird
-massenhafte Anfragen an die Datenbank gerichtet werden und der Server dadurch in die Knie gezwungen wird
etc.

Es ist ein leichtes für mich, den Onlinedienst sofort zu deaktivieren, die Programminstanzen können dann eben keine Vorschläge mehr anbieten. Besser wäre, dem einzelnen Übeltäter Einhalt zu gebieten oder solche Dinge zumindest zu erschweren.
Über Filter könnten Daten aussortiert werden, pro Client könnte die Zahl der Zugriffe pro Zeiteinheit begrenzt werden. Ich habe auch überlegt, daß jede Programminstanz sich eine ID holen muß, die dann bei jedem Datenbankzugriff mitgeschickt werden muß. Zugriffe einer bestimmten ID könnten dann geblockt werden. Freilich ist diese Vorgehensweise nicht 100% sicher und kann geknackt werden. Benutzer-Accounts kommen nicht in Frage, dafür sind Benutzer zu bequem.

Mich interessieren hierzu eure Gedanken und Vorschläge, auch ganz allgemeiner Art.

Danke! :)
 

Degger

Mitglied
Mitglied seit
30.07.2008
Beiträge
65
Gut das mit den Accounts versteh ich, die User wollen sich nicht immer erst einloggen um dort was eingeben zu können.

Du hast aber erwähnt das das Programm bei jedem User lokal auf dem Rechner liegt. Wieso legst du dann nicht eine Datei mit ab wo du eine eindeutige ID drinstehen hast. Oder du schreibst diese ID hart irgendwo rein. Jedenfalls brauchst du ja irgendwas, was den User eindeutig identifiziert, damit du ihn bspw. notfalls sperren kannst.

Mit dieser ID kannst du dann ja einfach arbeiten, also wie du schon sagtest, mitsenden bei jeder Anfrage und dann checken, was er tun darf und was nicht...

Hoffe das hat geholfen...
 

Rajmund

Mitglied
Thread Starter
Mitglied seit
15.04.2006
Beiträge
569
Nun, eine ID irgendwo abzuspeichern, ist kein Problem. Hart kodieren geht nicht, sonst hätte ja jeder Benutzer die gleiche ID.
Das Problem, was aber entsteht: das Programm muß seine ID erstmal bekommen, es muß also eine Anfrage an den Server richten: Hallo, gib mir mal eine eindeutige ID. Ein Hacker könnte hier eine ganze Reihe solcher Anfragen an den Server stellen, um so einen ganzen Pool von IDs zu bekommen, mit denen er dann sein Unwesen treiben könnte.
 
Oben