Sicherheit für Datenbankverbindung

Status
Nicht offen für weitere Antworten.

Dagobert

Bekanntes Mitglied
Guten Abend,
Ich habe hier vor einiger Zeit gelesen das man Java Programme sehr simpel und fast Vollständig wieder ein Quellcode umwandeln kann. Das hat mich zu der Überlegung gebracht, wie ich in meinem Programm eine Sichere SQL Verbindung beibringen kann. Ich haben im Quellcode die Verbindungsdaten hinterlegt, jetzt kann doch jeder kommen und meine Datenbank plätten oder sehe ich das Falsch?!
Wie kann ich das umgehen.

mfg. Dagobert
 

Schandro

Top Contributor
Jep, Passwörter im Quellcode hinterlegen geht garnicht.

Wie wärs, wenn die Application sich mit nem Server verbinden muss und dieser ihm die Daten für die Datenbank schickt? Internetverbindung muss der Benutzer ja eh haben um sich mit der Datenbank zu verbinden...
 
J

JohannisderKaeufer

Gast
Wie wärs, wenn die Application sich mit nem Server verbinden muss und dieser ihm die Daten für die Datenbank schickt? Internetverbindung muss der Benutzer ja eh haben um sich mit der Datenbank zu verbinden...

Und wie stellst du sicher, dass es das richtig Programm ist, das beim Server nach der Verbindung fragt? Authentifizieren kann es sich ja nicht, da Authentifizierungsdaten im Programm, quasi offen daliegen würden.

Das man die Daten nicht durch eine maninthemiddle-Attacke ausspäht?

Unter Umständen kommt man sogar ohne Decompiler an eine Datenbankverbindung um diese "zu plätten".
 

Schandro

Top Contributor
€dit: Ich hab ziemlich wenig Ahnung vom Thema Sicherheit in Software, deswegen schreib ich lieber gar nichts dazu ;)
 
M

maki

Gast
Und wie stellst du sicher, dass es das richtig Programm ist, das beim Server nach der Verbindung fragt? Authentifizieren kann es sich ja nicht, da Authentifizierungsdaten im Programm, quasi offen daliegen würden.
Wenn der User sich selbst Authentifizieren muss (und keine Daten im Programm hinterlegt sind) stellt sich dieses Problem nicht.

Das man die Daten nicht durch eine maninthemiddle-Attacke ausspäht?
Das ist etwas für den Bereich Netzwerksicherheit.

Unter Umständen kommt man sogar ohne Decompiler an eine Datenbankverbindung um diese "zu plätten".
Meinst du die "Schwachstelle Mensch" im allgemeinen oder wie jetzt..
 

Dagobert

Bekanntes Mitglied
hm...
also kann ich das Vergessen, dass ich eine Tabelle in der Datenbank habe, wo Benutzer und Passwort gespeichert sind, um eine Benutzerkontrolle in einem Programm zu machen, also Praktisch wie die Anmeldung hier im Forum nur als Java App ?

Oder gibt es dazu noch eine andere möglichkeit? Ich habe keine lust 1000 Datenbankkonten zu haben :D

mfg. Dagobert
 

Schandro

Top Contributor
Was soll das Client Programm den genau mit der Datenbank anfangen?
Vllt. kannst du ja in deiner Datenbank ansich ein 2. Zugangsaccount anlegen der nur das Recht hat bestimmte Daten zu lesen. Der Zugang zu diesem Account könnte dann ja auch im Quellcode drinstehen
 

faulelotte

Mitglied
Ein paar Sachen fielen doch schon. Du erstellst halt eine 3 Tier Anwendung.
Der Client verbindet sich unter Angabe von Username und Passwort mit einem Server und der quatscht als einziger direkt mit der Datenbank. In der Datenbank wird für die Applikation nur ein User mit Berechtigung beschränkt so weit wie nötig eingerichtet. Und falls du die Kommunikation zwischen Client und Server gegen Man-In-the-Middle Angriffe sichern willst, wozu gibts z.B. SSL ?

MfG FauleLotte
 

Dagobert

Bekanntes Mitglied
Also ich möchte ein Programm schreiben, was verschiedene User zulässt. Diese Benutzer sollen Daten lesen und editieren können, aber nicht löschen können. Das wollte ich mit einer Tabelle Benutzer machen wo Passwörter usw. hinterlegt sind.

mfg. Dagobert
 
J

JohannisderKaeufer

Gast
Meinst du die "Schwachstelle Mensch" im allgemeinen oder wie jetzt..

Nö, das meinte ich so nicht. Bei JDBC-Anwendungen habe ich schon einige male gesehen, das man ein Singelton erstellt, das die Datenbankverbindung hält und eine Methode anbietet die eine Connection zu eben jener zurückliefert.

Wenn ich (als Ganove) also eine Verbindung zu einer Datenbank möchte, könnte ich mir diese Klasse besorgen, eine Connection holen, und damit ganz ganz böse Statements an die DB schicken (z.B. dodelete AllTables, and shutdown, and create trigger, that does the same oder so :bahnhof:).
 
M

maki

Gast
Nö, das meinte ich so nicht. Bei JDBC-Anwendungen habe ich schon einige male gesehen, das man ein Singelton erstellt, das die Datenbankverbindung hält und eine Methode anbietet die eine Connection zu eben jener zurückliefert.

Wenn ich (als Ganove) also eine Verbindung zu einer Datenbank möchte, könnte ich mir diese Klasse besorgen, eine Connection holen, und damit ganz ganz böse Statements an die DB schicken (z.B. dodelete AllTables, and shutdown, and create trigger, that does the same oder so :bahnhof:).
Wenn du als "Ganove" Zugang zur der Klasse/zum Objekt hast welches die Db Verbindungen aufbaut dann stimmt etwas ganz und gar nicht mit dem Deisgn.
 

sparrow

Top Contributor
Also ich möchte ein Programm schreiben, was verschiedene User zulässt. Diese Benutzer sollen Daten lesen und editieren können, aber nicht löschen können. Das wollte ich mit einer Tabelle Benutzer machen wo Passwörter usw. hinterlegt sind.

Hallo Dagobert,

irgendwann schickst du ja Benutzernamen und Password an die Datenbank. Jetzt hast du IMHO zwei Möglichkeiten:

1) Du gehst das größere Risiko ein und der angemeldete Benutzer auf der Datenbank darf alles und nur die Programmlogik entscheidet ob der im Programm angemeldete Benutzer zugelassen ist und was er darf. Die Probleme dieser Version wurden hier bereits genannt.

2) Jede moderne Datenbank kann Benutzer (Rollen) verwalten. Warum überlässt du es nicht der Datenbank ihre Stärken auszuspielen? Der Benutzer ist also entsprechender Benutzer auf der Datenbank, hier kann man auch schön für jede Tabelle/View einstellen welche Rechte er hat, etc.

Gruß
Sparrow
 

Dagobert

Bekanntes Mitglied
Guten Abend,

erstmal vielden Dank für eure Hilfe.
Ich werde mich dann jetzt mal mit dem Usermanagment ohne GUI vertraut machen.
Habe mich dazu entschlossen für jeden Benutzer des Programms auch ein eigenen Datenbankuser zu erstellen.

mfg. Dagobert
 

tfa

Top Contributor
Habe mich dazu entschlossen für jeden Benutzer des Programms auch ein eigenen Datenbankuser zu erstellen.
Diese Lösung finde ich auch problematisch. Überlege dir, ob du die Berechtigungen für deine Anwendung damit sicher regeln kannst. Du kannst zwar sagen, Benutzer X hat auf Tabelle Y die Rechte insert, update und select. Aber das gilt dann für alle Daten in dieser Tabelle. Er könnte auch Datensätze lesen oder verändern, auf die er eigentlich keinen Zugriff haben sollte. Sicherlich könnte man das auch mit speziellen Views oder STPs umgehen. Das würde die Sache aber noch aufwendiger machen.

Meiner Meinung ist die einzig praktikable Lösung eine 3-Tier-Anwendung mit Client und Server.
 

Ebenius

Top Contributor
Der Themeneröffner schreibt:
Also ich möchte ein Programm schreiben, was verschiedene User zulässt. Diese Benutzer sollen Daten lesen und editieren können, aber nicht löschen können.
Das kann er ohne 3-Tier-App lösen. Pauschal lässt sich nicht sagen: "[...] die einzig praktikable Lösung [...]", wenn man nicht auf die konkreten Anforderungen eingeht. Oder?

Ebenius
 

Dagobert

Bekanntes Mitglied
Guten Morgen,

ich habe gestern angefangen daraus mal wieder ein Client-Server-Konzept zu basteln mithilfe von SIMON.
Also im Server werden die Anmeldedaten für die Datenbank hinterlegt (User, PW).
Der Server ist das einzige Objekt das direkt mit der Datenbank kommunitzieren soll.
Dann der Client der alle Querrys zum Server schickt und der die (falls möglich, Benutzerrechte es zulassen) results zurückschickt.
So habe ich mir das jetzt ungefähr vorgesllt.

mfg. Dagobert
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
Z Sicherheit Datenbankprogrammierung 0
Neumi5694 MS Access Sicherheit entfernen Datenbankprogrammierung 0
D MySQL Applet MYSQL Abfragen Sicherheit Datenbankprogrammierung 2
8 MySQL Kurze Frage zur Sicherheit Datenbankprogrammierung 9
N Frage zur Sicherheit von Konfigurationsdatei Datenbankprogrammierung 4
S Sicherheit bei JPMDBC Datenbankprogrammierung 5
M Sicherheit bei Applet auf MySQL Datenbank Datenbankprogrammierung 4
G DB Sicherheit in JAVA Datenbankprogrammierung 14
sparrow Datenbank und Sicherheit Datenbankprogrammierung 2
D Verknüpfung auflösen für Frontend Datenbankprogrammierung 7
R Beste Lösung für User Erstellung in mongodb Datenbankprogrammierung 1
I SaaS Applikation: pro Kunde eine Datenbank / Schema oder eine DB für alle Kunden? Datenbankprogrammierung 76
O apache derby in eclipse für Datenbanken einbauen Datenbankprogrammierung 3
Zrebna Empfehlung für ein kostenloses DB-Hosting gesucht Datenbankprogrammierung 6
M Lösungsvorschläge für Multi-User Datenbankprogrammierung 1
M Alle Records Felder kriegen für DB Abfrage Datenbankprogrammierung 14
pkm PostgreSQL Kann mit mybatis einen Parameter für eine postgreSQL-Abfrage nicht übergeben. Datenbankprogrammierung 5
Kirby.exe Denkanstoß für Ranking Datenbankprogrammierung 1
L Oracle Repräsentative Namen für die Column Types Datenbankprogrammierung 9
OnDemand Struktur für Parent / Child Produkt Datenbankprogrammierung 5
N ORM für Sqlite Datenbankprogrammierung 4
I Konzept: Klasse / Entity für Einstellung der Software Datenbankprogrammierung 3
H suche eine Login system Bibliothek für Java Datenbankprogrammierung 5
ruutaiokwu MySQL MariaDB-Client-Zertifkate, nur für einen bestimmten User Datenbankprogrammierung 5
B Datenmodell für Regeln + Bedingungen & Referenz auf andere Tabelle Datenbankprogrammierung 12
O Dokumentation für MariaDB 10.3. Datenbankprogrammierung 2
F MariaDatabase Einstellungen für Verbindungen Datenbankprogrammierung 5
Dimax MySQL Trigger für eine Spalte Datenbankprogrammierung 5
Dimax MySQL Maximale Datenlänge für eine Spalte einer Datenbank in java ermitteln Datenbankprogrammierung 15
platofan23 MySQL Java Programm findet Treiber für mySQL auf Debian-Server nicht? Datenbankprogrammierung 11
B Brauche Tipps für Datenbankdesign Datenbankprogrammierung 8
B Tabelle für "wiederkehrende Rechnungen" Datenbankprogrammierung 12
Danloc Informationen für Datenbankverbindung wo/wie speichern? Datenbankprogrammierung 11
J Warum sind Sockets für einen Live-Chat sinnvoll? Datenbankprogrammierung 8
R Java-Befehle/Operatoren für copy&paste Datenbankprogrammierung 2
X PostgreSQL Datenbankdesign für Vokabeltrainer Datenbankprogrammierung 48
@SupressWarnings() HSQLDB Datenbank für mein Dorfbauspiel "Time of Kings" Datenbankprogrammierung 6
M Idee Umsetzung //NFC Eintrittskarten für Geburtstag Datenbankprogrammierung 2
looparda Architektur für JPA Hibernate Umstieg Datenbankprogrammierung 14
P Datanbank für Java-Programmierung Datenbankprogrammierung 10
M Feedback für neues Buch über "Java und Datenbanken" erwünscht Datenbankprogrammierung 8
J SQLite Ich muss für mein Projekt meine Datenbank Kapseln Datenbankprogrammierung 2
J Tipps für ERM Datenbankprogrammierung 4
P Highlevel-Lösung für Speicherung von Baumstruktur mit unbekannter Tiefe Datenbankprogrammierung 1
F welche Datenbank für Messwerte? Datenbankprogrammierung 4
E Warum werden für Datenbanktabellen Schemanamen festgelegt? Datenbankprogrammierung 1
M DB Schema für Vokabeltrainer Datenbankprogrammierung 2
U SQLite Für mich etwa komplexe Abfrage via 2 Tabellen Datenbankprogrammierung 5
E Kann man, wenn man in DB2 Tabellen erstellt hat für dessen auch einen Command-File erstellen? Datenbankprogrammierung 1
T NoSQL Connection für die Thesis [GWT] Datenbankprogrammierung 1
J SQLite Abfrage ausführen stoppt für Zyklus? Wie es zu lösen? Datenbankprogrammierung 3
S HSQLDB Fehlermeldung für den Bildschirm Datenbankprogrammierung 3
L Datenmodell erstellen für eine Nutzertanalyse Datenbankprogrammierung 1
I Query für Geburtstage Datenbankprogrammierung 6
L Zentrale Datenbank im Internet für Spiele Highscores? Datenbankprogrammierung 1
P Derby/JavaDB Csv Datei für dieses Musterprogramm Datenbankprogrammierung 12
ruutaiokwu code-formatter für t-sql... Datenbankprogrammierung 12
J Plug-In-Framework für Hibernate-Klassen Datenbankprogrammierung 0
T Mehrsprachigkeit für Tabellenfelder Datenbankprogrammierung 6
E MySQL Große Datenmengen reibungslos speichern für Gameserver Datenbankprogrammierung 6
F MSSql oder MongoDB für die Speicherung von POI Datenbankprogrammierung 9
G SQLite SQLite Select für View vereinfachen/optimieren Datenbankprogrammierung 4
P MySQL Historie für ein Objekt anlegen Datenbankprogrammierung 5
P MySQL eine richtige Datenbank für einen routenplaner erstellen Datenbankprogrammierung 2
K JDBC- In Java "stored procedure" erstellen für DB2,OracleSql ... Datenbankprogrammierung 3
J Datenbank für Fragen/ Antworten Datenbankprogrammierung 7
O Datenbankschnittstelle für Java Datenbankprogrammierung 8
L Datenbank für kleinere Anwendungen Datenbankprogrammierung 3
N Query für Derby DB mit Enterbrise Bean Datenbankprogrammierung 4
S ich brauche tipps für JDBC Datenbankprogrammierung 4
I Hibernate - Best Practice für Lazy Loading Datenbankprogrammierung 3
R MySQL Voraussetzungen für eine erfolgreiche Datenbankanbindung mittels JDBC Datenbankprogrammierung 2
GianaSisters SQL Befehl für allgemeine Datenbankexistenz Datenbankprogrammierung 4
B Beispiel für sicheres DBUsername/DBPassword handling Datenbankprogrammierung 4
I Anfänger-Tutorial für Hibernate gesucht Datenbankprogrammierung 3
heart_disease Beratung für Datenbankdesign Datenbankprogrammierung 13
C Embedded DB für Java Datenbankprogrammierung 26
J Unterstützung für verschiedene Datenbanken Datenbankprogrammierung 2
L MySQL Probleme mit PreparedStatement für SQL-Abfrage in Java Datenbankprogrammierung 2
F suche Erstanschub für DB-Zugriff Datenbankprogrammierung 9
F MySQL SQL Abfrage für u.a. Spaltenname key Datenbankprogrammierung 4
T ResultSet befehl für leere Spalte nicht lesen Datenbankprogrammierung 4
F Performance-Tool für Oracle Datenbankprogrammierung 2
T Kleine Tabellen für schnellere abfragen? Datenbankprogrammierung 3
C Split String für SQl query Datenbankprogrammierung 10
A update methode für datenbank Datenbankprogrammierung 2
N Datenbank für Dateien Datenbankprogrammierung 6
N Datenbank für einen Stundenplan Datenbankprogrammierung 4
G welche Datenbanktabellen für folgende Attribute Datenbankprogrammierung 3
R Connection Problem für eine externe DB mit Java (JDBC) Datenbankprogrammierung 9
S JPA (EntityManager für jeden Nutzer?) Datenbankprogrammierung 8
J Buffer Manager für Datenbank Datenbankprogrammierung 4
F SQL Voraussetzung für JDBC? Datenbankprogrammierung 10
R Bei Webformular DropDown Felder JA, NEIN! Was für einen Datentyp verwenden? Datenbankprogrammierung 7
T SSL Zertifikat für mysql datenbankzugriff Datenbankprogrammierung 6
T Debugger für SQL? Datenbankprogrammierung 5
Chtonian Effizientes Query System für Wortnachschlagewerk Datenbankprogrammierung 9
G Tabelle für Zeitraum sperren Datenbankprogrammierung 4
A Struct für Datenbank abfrage? Datenbankprogrammierung 12
O Hibernate für Eclipse Datenbankprogrammierung 5

Ähnliche Java Themen

Neue Themen


Oben