AW: AW: Mysql und JDBC Grundsätze
Hallo Bodo, Sorry wenn ich hier privat Antworte - ich clicke einfach auf Antworten ;)
-----Ursprüngliche Nachricht----- Von: Bodo Kaelberer [mailto:BodoKaelberer@webkind.de] Gesendet: Mittwoch, 17. März 2004 16:09 An: Ralf Seger Betreff: Re: AW: Mysql und JDBC Grundsätze
Hallo Ralf.
War Deine Mail absichtlich an mich privat? Mir passiert das bei dieser Liste staendig, dass ich aus versehen nur an den Poster anworte.
Gegen ein Drop Table Kundendaten hilft das Rechtemanagement der Datenbank. Du darfst nicht jedem User Admin Rechte geben ;-). Üblicherweise reichen Leserechner GRANT (recht, z.B VIEW, INSERT ) TO
(user) ..
In einem Shop muss man typischerweise auch Daten aendern koennen. Kein DROP TABLE aber doch aendern und loeschen einzelner Datensaetze. Hab ja auch nicht gesagt dass Du in dem Shop ALLE Rechte den Nutzern entziehen sollst - aber Du wirst doch nicht wollen dass ein Shopbenutzer Dein Datenbankschema manipulieren kann, oder ? Wenn Du hier die Rechte in der DB setzt kann zumindest nicht sowas passieren. Ich arbeite Selber mit Oracle welches schon eine sehr feine Rechtezuteilung zulässt :) Aber auch MySQL hat soweit ich mich erinnern kann die Möglichkeit Rechte auf einzelnde Tabellen zu setzen.
Problematisch ist auch, dass man typischerweise (bei den meisten Webspace-Providenr) nur einen Benutzer fuer die Datenbank bekommt. Und dieser eben alles kann. Wenn Du die DB selber verwalten kannst kannst Du Dir ja einen weiteren User einrichten .. Ansonsten geb ich Dir recht dass dieser Weg nicht so einfach ist. Aber wenn Du wirklich "normal JDBC" verwendest und sogar das Passwort noch sichtbar ist kannst Du in der Konfiguration keinen Webshop betreiben. Da kann Dir jeder mässig begabte Hacker die Datenbank zerschiessen. Wenigstens der Login muss unsichtbar sein.
Üblicherweise macht man in der Datenbank für Nutzer soweiso eine eigene Schicht (Views) Und lässt sie nur auf Views arbeiten. (erhöht auch die Sicherheit weil so keiner auf Die Tabellen direkt zugreifen kann. Wenn Du Foreign Key Constraints verwendest schützt Sich die Datenbank selber gegen ungewollte Manipultion - sehr Empfehlenswert wenn möglich)
Inwiefern geben "Foreign Key Constraints" mehr Sicherheit? Ich dachte, die werden zum automatischen Loeschen abhaengiger Datensaetze verwendet? Wegen der Foreign Key constrainst kann ein User nicht "willkürlich" Daten einfügen die von dem Fremdschlüssel abhängen oder eben Daten löschen welche noch von einer anderen Spalte refernziert werden.
Wird von MySQL glaub auch nicht unterstuetzt. Zumindest war es vor so 2-3 Jahren noch so. Seit der 4er Version geht das mit InnoDB. Du musst allerdings Manuell einen Index erstellen auf alle Spalten für die Du FK_Constraints verwenden willst. (ich glaub seit 3.43 - aber die genaue Version weiss ich nicht mehr.
Ciao, Ralf
Haaallo
In einem Shop muss man typischerweise auch Daten aendern koennen. Kein DROP TABLE aber doch aendern und loeschen einzelner Datensaetze.
Hab ja auch nicht gesagt dass Du in dem Shop ALLE Rechte den Nutzern entziehen sollst - aber Du wirst doch nicht wollen dass ein Shopbenutzer Dein Datenbankschema manipulieren kann, oder ?
Gewiss nicht. Aber wenn er das schafft, hat man bereits beim Design der Software versagt (-; Natuerlich ist kaum eine Software frei von Bugs. Und da ist es gut, wenn es seitens der Datenbank noch einen Sicherheitsmechanismus gibt, der einen da beschuetzt, wo man selbst gepatzt hat. Es ist aber eben auch eine deutliche Limitierung fuer die Einsatzmoeglichkeiten einer Software, wenn man das vorraussetzt. Vielen Website-Besitzer haben nun mal keinen administrativen Zugriff auf die Datenbank.
Wenn Du hier die Rechte in der DB setzt kann zumindest nicht sowas passieren. Ich arbeite Selber mit Oracle welches schon eine sehr feine Rechtezuteilung zulässt :) Aber auch MySQL hat soweit ich mich erinnern kann die Möglichkeit Rechte auf einzelnde Tabellen zu setzen.
Hat es.
Aber wenn Du wirklich "normal JDBC" verwendest und sogar das Passwort noch sichtbar ist kannst Du in der Konfiguration keinen Webshop betreiben. Da kann Dir jeder mässig begabte Hacker die Datenbank zerschiessen. Wenigstens der Login muss unsichtbar sein.
Meine Rede (-;
Inwiefern geben "Foreign Key Constraints" mehr Sicherheit? Ich dachte, die werden zum automatischen Loeschen abhaengiger Datensaetze verwendet?
Wegen der Foreign Key constrainst kann ein User nicht "willkürlich" Daten einfügen die von dem Fremdschlüssel abhängen oder eben Daten löschen welche noch von einer anderen Spalte refernziert werden.
Das ist aber eher eine Restsicherheit. Denn wenn der User es schafft, unbefugt eine Datensatz zu loeschen, dann vielleicht auch einen anderen und jeder ist nicht duch Referenzen geschuetzt.
Seit der 4er Version geht das mit InnoDB. Du musst allerdings Manuell einen Index erstellen auf alle Spalten für die Du FK_Constraints verwenden willst. (ich glaub seit 3.43 - aber die genaue Version weiss ich nicht mehr.
Was ist InnoDB? Bye -- 1 Bodo Kaelberer 123 http://www.webkind.de/ 3 4 Politik ist, wenn viele sich streiten und keiner sich freut.
participants (2)
-
Bodo Kaelberer
-
Ralf Seger