Datenbankverbindung ohne Passwort im Quelltext bei einer offline Anwendung

eskimo328

Aktives Mitglied
Hallo,

wie eine Datenbankverbindung zu einer lokalen H2-Datenbank aufbauen, ohne dass Passwort im Quelltext zu speichern? Das Thema gab es schon öfters, eine gute Lösung ist wohl der Weg über einen Webservice.

Problem ist jedoch, dass sich die Datenbank auf dem Client-Rechner befindet und die Anwendung offline funktionieren muss. D.h. einmalig (oder manuell durch den User) werden die Benutzer- und Anwendungsdaten (Stammdaten, Statistikdaten, etc.) vom Server geladen und in der lokalen DB gespeichert.

Folgendes Szenario:
Der User installiert die Anwendung, damit wird automatisch die DB und deren Struktur erstellt.
Beim Start der Anwendung baut diese eine Verbdindung zur lokalen DB (DB-Benutzer + DB-Passwort stehen plain im Code) auf. Ist der User online, werden die Benutzerdaten automatisch vom Server geladen und in der DB gespeichert. Dann kann sich der User anmelden und alle notwendigen Daten vom Server laden, die Daten werden dann in der DB gespeichert. In Zukunft muss der User dann auch offline arbeiten können.

Wie kann im offline Modus sicherer eine DB Verbindung aufgebaut werden, ohne dass das PW im Klartext im Code steht?
Ich nehme an eine sichere Variante gibt es nicht, aber eine bessere?
 

tfa

Top Contributor
Der Anwender muss das DB-Passwort selbst eintippen. Das wäre die "sicherste" Lösung.
Handelt es sich um eine embedded H2 oder läuft der Server lokal?
 

eskimo328

Aktives Mitglied
Wenn eine unbefugte Person Zugriff zu dem Notebook hat (aus welchem Grund auch immer) darf diese nicht die Daten auslesen, also nicht an Kunden- /Auftrags-/ Statistikdaten etc. herankommen.
 
M

Marcinek

Gast
Dann benutzte doch die Authentifizierung der Datenbank. Dann kannste das Rechtesystem der Datenbank nutzen.
 

tfa

Top Contributor
Wenn eine unbefugte Person Zugriff zu dem Notebook hat (aus welchem Grund auch immer) darf diese nicht die Daten auslesen, also nicht an Kunden- /Auftrags-/ Statistikdaten etc. herankommen.
In dem Fall muss die DB natürlich auch verschlüsselt sein. PW alleine reicht nicht.
Am besten verschlüsselt man die gesamte Festplatte und lässt das Notebook beim Booten ein Passwort abfragen. Für Firmenlaptops sollte das eigentlich Standard sein.
 

eskimo328

Aktives Mitglied
OK, Datenbank-Verschlüsselung sollte man auch nachdenken, das stimmt. Aber auch hier benötige ich ein PW für die Verschlüsselung, das ebenfalls wieder irgendwo gespeichert werden muss. Selbes problem!?

Festplatte/Notebook verschlüsseln wäre zwar eine Variante, jedoch handelt es sich teilweise um Firmennotebooks aber auch um private Notebooks. Wir müssen von unserer Seite einfach mehr oder weniger alles mögliche machen um das System "sicher" zu machen, als auch ohne Verschlüsselung/Boot-Passwort.

Wir haben jetzt auch keine HOCHgeheimen Daten die die Welt verändern und brauchen es daher nicht zu übertreiben. Aber dennoch, wenn es was zu verbessern gibt bzgl. Sicherheitm, sollte man das auch machen. Ich denke eben, das PW im Code zu speicher ist so ziemlich die einfachste und unsicherste Variante.
 

eskimo328

Aktives Mitglied
Das is geht ja eben nicht. Der Benutzer soll nur seine eigenen Zugangsdaten eingeben müssen um sich an der Anwendung einloggen zu können. Diese stehen blöderweise in der Datenbank, die ebenfalls ein Passwort benötigt.

D.h. es gibt keine bessere Lösung, also das PW muss im Code stehen, zumindest bei der offline Variante?

Wie wäre folgende Variante, oder habe ich hier einen Denkfehler:
  1. Anwendung wird zum ersten Mal gestartet
  2. Benutzer gibt Name + Passwort ein
  3. Anfrage mit Name und Pw wird an den Server gesendet, dieser prüft die Daten mit der Benutzertabelle und gibt ein OK zurück. (Bei einem FAIL ist der Login nicht möglich)
  4. Wenn OK, dann erstellt die Client-Anwendung die Datenbank mit einem Standard User und Passwort, dass ich ebenfalls per Server als Antwort zurück bekomme. Diesen kann ich als Admin nutzen um auf die Datenabk zuzugreifen. Zudem liefert mir der Server alle Benutzer und Passwörter, die ebenfalls als Datenbankbenutzer angelegt werden.
  5. In Zukunft kann ich dann mit meinem eigenen Benutzernamen und Passwort eine Datenbankverbindung aufbauen und bin zugleich auch eingeloggt.

@Marcinek: Hast du das vielleicht so gemeint?
 

moonermo

Mitglied
Wie wäre es, wenn die Nutzerdaten zum Einloggen in die Anwendung gleich der Nutzernamen für die DB sind? (Passwörter natürlich auch). Dann fällt die Tabelle für Benutzernamen weg...
 

Guybrush Threepwood

Top Contributor
Die Offline-Datenbank wird sicher irgendwo im Benutzerverzeichnis abgelegt, oder? In diesem Fall wäre das Datenbank-File bereits durch die Zugriffskontrolle des Betriebssystems geschützt. Das ist ja nicht viel anders als mit dem Dokumenten der Firma, die ja auch irgendwie geschützt abgelegt werden müssen, ohne dass das ganze Internet darauf zugreifen kann. Die Datenbank-Datei ist dann lediglich eine Datei mehr unter diesen anderen Dokumenten.
 

areafo

Mitglied
@eskimo

Du kennst doch bereits Grundlegend alle aktuellen Möglichkeiten und hast diese auch logisch durchdacht.

Nochmal. Entweder man hat etwas geschützt mit einer Authentifizierungsmethode seiner Wahl, dann muss diese auch durchgeführt werden oder man vertraut auf die schon bestehenden Authentifizierungsmethoden drumrum und braucht dann keine eigene zu implementieren.

Woher die Credentials für die Authentifizierung kommen ist erstmal zweitrangig und bringt dich anscheinend zu einem Punkt wo du nach etwas suchen möchtest was es nicht gibt.

Ergänzend:
1. Du weisst bereits das dein Quelltext einsehbar ist >>> Das ist schonmal sehr gut
2. Du weisst bereits das dein Quelltext und alle Abläufe darin manipulierbar sind >>> wunderbar
3. obfuscator für den Quelltext und viele Spitzfindigkeiten im und um den Quelltext herum verschaffen Zeit und bringen für den Entwickler Hürden mit sich mehr nicht.

Clientseitig wirst du natürlich niemals auf ein Serversicherheitsniveau heran kommen
 
Zuletzt bearbeitet:

Guybrush Threepwood

Top Contributor
Es handelt sich hier um ein Außendienstsystem für Vertreter

Ja, aber wenn jemand unberechtigt an das Datenbank-File herankommt, dann hat er möglicherweise auch Zugriff auf die Anwendung selbst, die - wie Du schreibst - die Daten automatisch von einen Server holt. In diesem Fall müsstest Du die gesamte Anwendung schützen. Es ist dann nicht alleine ein Problem davon, ein Passwort für die lokale Datenbank im Quelltext zu haben. Das Problem ist dann viel umfangreicher.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
H Datenbankverbindung zu MS Access Datenbankprogrammierung 4
Zrebna Wie mittels PL/SQL eine Datenbankverbindung blockieren? Datenbankprogrammierung 6
B Probleme mit Datenbankverbindung Datenbankprogrammierung 2
J Jar-Datei stellt keine Datenbankverbindung her Datenbankprogrammierung 3
B SQLite Frage zu SQLite Datenbankverbindung Datenbankprogrammierung 7
Danloc Informationen für Datenbankverbindung wo/wie speichern? Datenbankprogrammierung 11
T Problem mit Datenbankverbindung Datenbankprogrammierung 22
I Datenbankverbindung Oracle DB klappt nicht - getConnection returned null Datenbankprogrammierung 8
M Datenbankverbindung mit JSP herstellen Datenbankprogrammierung 19
D Keine Datenbankverbindung Datenbankprogrammierung 4
dat_vin JavaFX Datenbankverbindung über JPA und MySQL Error Datenbankprogrammierung 0
B Datenbankverbindung herstellen Datenbankprogrammierung 6
R Datenbankverbindung kann nicht hergestellt werden Datenbankprogrammierung 8
I SELECT bei Datenbankverbindung Datenbankprogrammierung 6
E Zuverlässige Datenbankverbindung Datenbankprogrammierung 4
B SQLite Java Login + Datenbankverbindung Datenbankprogrammierung 4
M Datenbankverbindung Access Datenbankprogrammierung 3
Kenan89 Keine Datenbankverbindung möglich Datenbankprogrammierung 52
T Datenbankverbindung access funtioniert nicht Datenbankprogrammierung 21
K Problem mit Datenbankverbindung via Eclipse Datenbankprogrammierung 2
M Datenbankverbindung zu langsam beim Insert? Datenbankprogrammierung 6
E Datenbankverbindung mit Oracle JDBC und Eclipse Plugin Quantum db Datenbankprogrammierung 2
N Allg. Frage zur Datenbankverbindung Datenbankprogrammierung 2
C [MSSQL] Datenbankverbindung will nicht klappen... Datenbankprogrammierung 2
Hartigan Datenbankverbindung automatisch aktualisieren Datenbankprogrammierung 3
C MySQL Keine Datenbankverbindung Datenbankprogrammierung 6
D MySQL Datenbankverbindung scheitert Datenbankprogrammierung 9
A Datenbankverbindung mit einer Datenbank auf einem Webspace Datenbankprogrammierung 10
G Wie sieht eine Datenbankverbindung mit jndi aus? Datenbankprogrammierung 3
D Sicherheit für Datenbankverbindung Datenbankprogrammierung 19
MQue MySQL DatenbankVerbindung Datenbankprogrammierung 3
B Datenbankverbindung kann nicht aufgebaut werden. Datenbankprogrammierung 2
M Aus einem Applet eine Datenbankverbindung starten? Datenbankprogrammierung 26
G Datenbankverbindung mit Proxool aufrecht erhalten Datenbankprogrammierung 4
G iBatis Datenbankverbindung - DB-User übergeben Datenbankprogrammierung 4
J Warum ist es aufwendig eine Datenbankverbindung herzustellen Datenbankprogrammierung 3
E Datenbankverbindung verwalten Datenbankprogrammierung 6
J Fehler bei Oracle-Datenbankverbindung Datenbankprogrammierung 2
E Datenbankverbindung Java MySQL Exception Datenbankprogrammierung 10
K Datenbankverbindung zu MySQL in XAMPP Datenbankprogrammierung 11
M Dauerhafte Datenbankverbindung - Timeouts? Datenbankprogrammierung 4
timomeinen [Hibernate] Datenbankverbindung testen Datenbankprogrammierung 11
M Datenbankverbindung bricht nach ca. 12 Stunden Verbindung ab Datenbankprogrammierung 3
K Wann schließt ihr die Datenbankverbindung? Datenbankprogrammierung 7
E Datenbankverbindung von BIRT Datenbankprogrammierung 3
S Datenbankverbindung auslagen Datenbankprogrammierung 3
8 MySQL Datenbankverbindung herstellen FAQ Datenbankprogrammierung 2
A Was passiert wenn eine Datenbankverbindung unterbricht Datenbankprogrammierung 7
S MongoDB löschung ohne Cascade Datenbankprogrammierung 1
P Derby/JavaDB Datenbanktabelle erweitern, ohne Tabelle zu ändern Datenbankprogrammierung 6
D OpenJPA Zeichenvorrat in DB & Fremdschlüssel ohne Entität Datenbankprogrammierung 5
B Inner Join ohne SQL Syntax Datenbankprogrammierung 2
M MySQL Verbindung zum Server aufbauen ohne DB ansprechen Datenbankprogrammierung 2
ruutaiokwu sql abfrage mit rekursion, mit oder ohne cte... Datenbankprogrammierung 5
X MySQL DB-verbindung ohne JDBC/ODBC Datenbankprogrammierung 1
N SQL-Injection verhindern OHNE PreparedStatements Datenbankprogrammierung 11
D Hibernate CreateQuery ohne Result Datenbankprogrammierung 7
R PreparedStatement ohne Parameter? Datenbankprogrammierung 4
P SQL Injection verhindern ohne z.B. prepareStatement Datenbankprogrammierung 2
Kenan89 Insert ohne Auswirkung Datenbankprogrammierung 7
D MySQL User mit nur mit lokalen Lesezugriff und ohne Phpmyadmin Datenbankprogrammierung 4
J Derby/JavaDB Zugriff ohne Entwicklungsumgebung Datenbankprogrammierung 5
M MySQL Bilddatei in MYSQL DB abspeichern, ohne lokal auf HDD zwischenzuspeichern Datenbankprogrammierung 3
Screen Ich suche eine SQLDatenbank ohne JDBC-Treiber Datenbankprogrammierung 12
T mdb Verbindung ohne Registrierung der Datenquelle im OS Datenbankprogrammierung 14
V MySQL MsSql ohne Server nutzen? Datenbankprogrammierung 2
NoXiD Access Datenbank in java einbinden ohne ODBC treiber zu erstellen Datenbankprogrammierung 5
T MySQL Zugriff ohne Angabe der Datenbank Datenbankprogrammierung 3
B MySQL-Dumpdatei ohne Batchdatei wieder einlesen Datenbankprogrammierung 48
M Mysql Delete ohne Where Klausel untersagen Datenbankprogrammierung 8
P JPA Datenbanksettings ohne persistence.xml Datenbankprogrammierung 3
E DB installieren ohne Installationsroutine Datenbankprogrammierung 4
V Delete From Tabelle, ohne vorher die Tabelle zu kennen Datenbankprogrammierung 5
P Datenbank für Java Anwendung wie SQLite ohne Installation Datenbankprogrammierung 4
M MySQL: Spalte auf einmal füllen, ohne iterieren zu müssen Datenbankprogrammierung 4
S Datenbank zugriff optimieren - zugriff ohne cursor? Datenbankprogrammierung 7
J HSQLDB ohne JDBC Datenbankprogrammierung 8
L einfache Datenbankabfrage ohne erstes Element Datenbankprogrammierung 2
D An Access Datenbank andocken ohne sie beim System anzumelden Datenbankprogrammierung 3
D ODBC Zugriff auf MDB-Datenbank, Insert Into ohne Funktion Datenbankprogrammierung 2
G Access mit Java OHNE ODBC Datenbankprogrammierung 7
B ResultSet ohne Datenbank erstellen Datenbankprogrammierung 4
G Datenbank ohne Server Datenbankprogrammierung 28
C Datenbankanbindung ohne ODBC JDBC Brücke Datenbankprogrammierung 5
R Datenbank ohne Installation (Multiuser) Datenbankprogrammierung 9
E jdbc Verbindung ohne Einrichten einer DSN möglich ? Datenbankprogrammierung 3
clemson [SQL] Abfrage --> alle Gruppen, ohne MailConfig Datenbankprogrammierung 10
O Datenbankzugriff "ohne" Server ? Datenbankprogrammierung 9
A Java und Accessdateien ohne ODBC? Datenbankprogrammierung 2
P MySQL- Neues Passwort Datenbankprogrammierung 1
K Wie speichere ich das DB Passwort richtig ab? Datenbankprogrammierung 19
M MySQL Passwort Clientseitig ändern und über Button ausführen Datenbankprogrammierung 0
K Passwort und SQLDeveloper Datenbankprogrammierung 4
A MongoDB Passwort Problem Datenbankprogrammierung 0
R DB2 Oracle 12 - invalid username/passwort Datenbankprogrammierung 1
S Java/Hibernate: DB-Passwort ändern Datenbankprogrammierung 4
G PostgreSQL Postgre: Passwort eines Benutzers ändern Datenbankprogrammierung 3
K H2 Datenbank Passwort durch Benutzer festlegen Datenbankprogrammierung 7
T XAMPP MySQL-Passwort Datenbankprogrammierung 3
Antoras Passwort aus DB auslesen Datenbankprogrammierung 12

Ähnliche Java Themen

Neue Themen


Oben