Sichere Passwortübergabe bei Datenbank

Status
Nicht offen für weitere Antworten.
G

Guest

Gast
Hallo allerseits,

folgende Problemstellung:
Ich habe ein selbstgeschriebenes Programm, welches auf eine MySQL Datenbank zugreift, die im Internet liegt. Dieses Programm soll auch an andere (evtl. nicht vertrauenswürdige) Personen weitergegeben werden. Damit der Zugriff auf die Datenbank auch funktioniert, müssen logischerweise auch die Zugangsdaten, welche ja im SourceCode stehen mitgegeben werden. Ich gebe jedoch verständlicherweise nur ungern meine Passwörter mit. Und soweit ich mich erinnnere, kann man aus dem erzeugten Bytecode ja wieder den Quelltext erzeugen oder?!
Da der Zugriff auf die Datenbank ja direkt erfolgt, ist auch ein Passwort Hashing nicht möglich.
Welche Methoden gibt es, ein Passwort in den Quelltext zu schreiben, ohne dass man es nachträglich auslesen kann?

Vielen Dank
 
G

Guest

Gast
Anonymous hat gesagt.:
...
Welche Methoden gibt es, ein Passwort in den Quelltext zu schreiben, ohne dass man es nachträglich auslesen kann?
...
Kurz und knapp, gar keine.
Du kommst um einen "richtigen Server" nicht herum.
 
G

Guest

Gast
Da das ganze nur unter Windowssystem laufen muss: wenn ich aus der jar-Datei ne exe erstelle. Ist es dann ncoh auszulesen?
 

Dukel

Top Contributor
Wozu die zugangsdaten in den Quellcode schreiben? Schreib ne Configurationsdatei (in die man z.b. von hand oder per Programm schreiben kann) und gibt eine dummy Datei oder gar keine mit.
 
G

Gast

Gast
und was soll jemanden daran hindern die Konfigurationsdatei auszulesen?
 

AlArenal

Top Contributor
Hier liegt sicherheitstechnisch noch an anderer Faux Pas vor:

Du musst deine DB ja so konfigurieren, dass jeder von jedem anderen Rechner im Netz aus mit User + Passwort Zugriff auf deine Daten bekommt. Das ist mal hübsch unsicher, denn um deine Datenbank zu hacken reicht ein einfacher Brute-Force-Angriff.

Aus Sicht der Sicherheit ist das ein kategorischer Fehler. Die Einsatzmöglichkteiten von JDBC sind auch sicherheitstechnischer Sicht recht begrenzt. Oft kann man nichtmal firmeninterne Anwendungen mit JDBC entwickeln, weil interne Security Policies das Öffnen der Ports in der Firewall nicht erlauben (zurecht).

Folgender Link beschreibt die Nutzung einer SSL-gesicherten Verbdinung für JDBC mit Postgres, vielleicht hilft er dir aber auch:

http://www.linuxfocus.org/Deutsch/March2003/article285.shtml
 
G

Gast

Gast
Die Datenbank ist vom Hoster sowieso so konfiguriert, dass der Zugriff von außen erlaubt ist. Bisher gab es da wohl keine größeren Probleme. Die Verwendung von SSL wäre hier sicherlich sinnvoll, darüber werde ich mal nachdenken.

Leider muss ich auf eine zentrale Datenbank von verschiedenen Rechnern aus zugreifen können. Im Zweifelsfall werde ich das ganze über PHP lösen, würde das ganze jedoch lieber über eine Desktop-Anwendung steuern, als über eine Website.

Hat niemand eine Idee, wie man sich der Sache am besten annehmen könnte, oder ist Java dafür doch der falsche Ansprechpartner?
 

AlArenal

Top Contributor
Vorschlag zur Güte:
Leg User und Passowrt verschlüsselt in einem Skript auf dem Server ab. Wenn die Leute deinen Client starten, lass ihn das Skript aufrufen, die verschlüsselten Zugangsdaten ziehen, entschlüssle sie in deinem Client und fertig.

So hast du das Passwort nirgends auf dem Client abgelegt. Nun müsste man schon den Client disasselblieren und den Zugriff auf die verschlüsselten Daten und deren Entschlüsselung nachbilden, um an die Daten zu kommen. Wenn du nun noch das Skript mit Zugangsdaten schützt und deinen Usern diese gibst, kannst du noch protokollieren wer wann drauf zugegriffen hat und kannst auch gezielt freischalten und sperren..
 
G

Guest

Gast
AlArenal hat gesagt.:
Vorschlag zur Güte:
Leg User und Passowrt verschlüsselt in einem Skript auf dem Server ab. Wenn die Leute deinen Client starten, lass ihn das Skript aufrufen, die verschlüsselten Zugangsdaten ziehen, entschlüssle sie in deinem Client und fertig.

So hast du das Passwort nirgends auf dem Client abgelegt. Nun müsste man schon den Client disasselblieren und den Zugriff auf die verschlüsselten Daten und deren Entschlüsselung nachbilden, um an die Daten zu kommen. Wenn du nun noch das Skript mit Zugangsdaten schützt und deinen Usern diese gibst, kannst du noch protokollieren wer wann drauf zugegriffen hat und kannst auch gezielt freischalten und sperren..
...dann lieber gleich die Daten über das Skript abfragen. :bae:
 
G

Guest

Gast
Anonymous hat gesagt.:
dann lieber gleich die Daten über das Skript abfragen. :bae:
Wie stellst du dir das vor? Die Query an ein PHP Script schicken, welches die Zugangsdaten überprüft, und die selbe Query an die Datenbank schickt? Dürfte sehr performant sein....
 

AlArenal

Top Contributor
Anonymous hat gesagt.:
...dann lieber gleich die Daten über das Skript abfragen. :bae:

Klar, kann er mit SOAP oder XML-RPC erledigen, nur muss er das Ganzen Datengeschiebe von Hand stricken und hat den ganzen zusätzlichen Aufwand. Wenn er unbedingt JDBC nutzen will, hat er nicht allzuviele Möglichkeiten.
 
G

Guest

Gast
Anonymous hat gesagt.:
Anonymous hat gesagt.:
dann lieber gleich die Daten über das Skript abfragen. :bae:
Wie stellst du dir das vor? Die Query an ein PHP Script schicken, welches die Zugangsdaten überprüft, und die selbe Query an die Datenbank schickt? Dürfte sehr performant sein....
Seine Hauptsorge ist, dass Unbefugte Blödsinn mit seinem Server anstellen,
wenn sie an das Passwort der Datenbank rankommen.
Egal was für Verrenkungen du machst, Passwörter im Code des Clients
sind einfach nicht sicher bzw. können leicht gefunden werden.
Dazu brauche ich nicht mal den Code zu analysieren, sondern schaue
mir die Kommunikation mit dem Server an und schon habe ich es.
Klartext: Die Datenbank hinter einer zusätzlichen Schicht verstecken
ist immer die bessere Lösung.

Über die Probleme mit der Performance würde ich mir erst dann Gedanken
machen, wenn es überhaupt welche gibt. Serverseitig kannst du einen Cache
einsetzen, zentral optimieren, ohne die Clients zu ändern und und und...
 
G

Guest

Gast
Wenn ich das richtig verstehe soll ich das also am besten so lösen:

In der Desktopanwendung werden entweder Passwörter hinterlegt, oder müssen eingegeben werden.
Mit diesen Zugangsdaten meldet sich die Anwendung bei einem Skript (was wäre hier sinnvoll? JSP, PHP... ?) auf dem Webserver an. Der Webserver greift auf die Datenbank zu und gibt das Ergebnis an die Anwendung zurück welche dann so damit weiterarbeitet, als läge die Datenbank auf dem eigenen Rechner.

Dann wäre noch die Frage ob es ohne weiteres möglich ist ein MySQL-Result einfach "roh" an Java zu übergeben und dieses damit weitergeben kann.

Wenn das o.g. der beste "sichere" Weg ist, wäre es nett, wenn das nochmal jemand der versierteren User bestätigen könnte ob ich das richtig verstanden habe.

Vielen Dank für eure Antworten. Habt mir schonmal sehr weitergeholfen, hatte schon Angst ich müsste ne reine Webanwendung schreiben. ;)
 
G

Gast

Gast
achso, nochwas: ist es sinnvoll SSL an dieser Stelle einzusetzen? Im Prinzip sinds keine geheimen Daten die gesendet werden und man wird diese über eine Website sowieso abrufen können.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
Thallius Moderne sichere synchrone Verschlüsselung mit Java? Allgemeine Java-Themen 3
A Thread sichere Datenstruktur Allgemeine Java-Themen 5
H sichere Datenbank-Verbindung Allgemeine Java-Themen 4
S Passwortübergabe bei URLs Allgemeine Java-Themen 6
8u3631984 Bilder in Datenbank speichern - sinnvoll Allgemeine Java-Themen 5
S Kochbuch bzw. Rezepte-Datenbank app mit Swing..? Allgemeine Java-Themen 5
N relativier Pfad für sqlite-Datenbank in Gradle/IntelliJ Allgemeine Java-Themen 2
Avalon Data Transfer Objekte aus Datenbank erstellen Allgemeine Java-Themen 8
B API Token in Datenbank ablegen? Allgemeine Java-Themen 9
S Einzigartigen String in Datenbank finden und löschen Allgemeine Java-Themen 23
P Datenbank-MiniGUI fügt keine Daten ein Allgemeine Java-Themen 4
Q-bert Strings aus der JList in eine Datenbank speichern Allgemeine Java-Themen 1
Meeresgott Kapselung Tabellen der Datenbank erzeugen. Allgemeine Java-Themen 7
D Daten in MySQL-Datenbank schreiben Allgemeine Java-Themen 13
looparda Unit Test - Abgänigkeit zur Datenbank isolieren Allgemeine Java-Themen 3
T Datentypen MNIST Datenbank auslesen (.gz) Allgemeine Java-Themen 0
O 2 Combobox in Abhängigkeit von der 1 Combobox (Datenbank) Allgemeine Java-Themen 1
L Daten ohne Datenbank richtig abspeichern Allgemeine Java-Themen 5
M Objekt serialisieren/deserialisieren und in einer SQLite-Datenbank speichern Allgemeine Java-Themen 3
F OOP Datenbank-Klasse überall verfübar Allgemeine Java-Themen 2
R Test Umgebung für Datenbank erstellen, was braucht es? Allgemeine Java-Themen 14
D OOP Design Pattern für GUI - Datenbank Anwendung Allgemeine Java-Themen 1
T Zugriff auf Datenbank Allgemeine Java-Themen 1
G Datenbank von nöten? Allgemeine Java-Themen 7
3 Backup von h2-Datenbank-Datei erstellen Allgemeine Java-Themen 6
S Java DateTime für Datenbank Allgemeine Java-Themen 4
F Alternative sun.jdbc.odbc.JdbcOdbcDriver (Access Datenbank) Allgemeine Java-Themen 2
vandread Daten verschlüsseln mit Java oder Datenbank Allgemeine Java-Themen 15
P MYSQL Datenbank Dump einspielen Allgemeine Java-Themen 1
M SQL Datenbank in JAVA Projekt Allgemeine Java-Themen 3
P iTunes Datenbank manipulieren Allgemeine Java-Themen 2
A Ausführbare Java-Datei aus Projekt und Datenbank Allgemeine Java-Themen 3
T Datenbank oder Filesystem? (E-Learning) Allgemeine Java-Themen 2
N Datei aus Datenbank öffnen mit Standardanwendung Allgemeine Java-Themen 2
J Datenbank und OO-Aufsatz Allgemeine Java-Themen 9
M BufferedReader: Vom Logfile zur Datenbank Allgemeine Java-Themen 6
P Klassen Template-Klasse für Datenbank-Abfragen erstellen Allgemeine Java-Themen 2
E JAVA Alternativen zur Datenbank? Allgemeine Java-Themen 7
Dit_ GeoKoordinaten Datenbank (nicht nur Städte) Allgemeine Java-Themen 6
J Progress Bar während Datenbank Erstellung Allgemeine Java-Themen 2
C Datenbank - Textfiles - Anderes Allgemeine Java-Themen 34
T Datenbank lässt sich un Entwicklungsumgebung öffnen, aus .jar aber nicht Allgemeine Java-Themen 9
G JNDI/LDAP/Datenbank Allgemeine Java-Themen 2
Meldanor Speichern der Datenbank - Lohnen sich mehrere Threads? Allgemeine Java-Themen 2
hdi [Free Download] Film-Datenbank Allgemeine Java-Themen 30
G Excel-Daten in Datenbank speichern - Problem mit leeren Feldern Allgemeine Java-Themen 7
K von List getSelected auf ResultSet Datenbank löschen Allgemeine Java-Themen 2
C Java Polling, Server Prozedur oder doch Datenbank? Allgemeine Java-Themen 4
H .dbf (IV) Datenbank einlesen Allgemeine Java-Themen 9
D Recipes / Codeschnipsel Datenbank für Java? Allgemeine Java-Themen 3
T MySQl Datenbank als Array ausgeben Allgemeine Java-Themen 11
M Rechenweg in Datenbank speichern und nutzen Allgemeine Java-Themen 6
O viele Datensätze aus Datenbank - Java Heap Space - Excepion Allgemeine Java-Themen 25
E Datenbank/iBatis Fehlermeldung Allgemeine Java-Themen 4
G Datenbank zur laufzeit wechseln Allgemeine Java-Themen 11
N ClassLoader - Laden von Bytecode aus einer Datenbank Allgemeine Java-Themen 6
S Speicherung von Daten: Datenbank(sql) oder xml? Allgemeine Java-Themen 9
F Vector in eine Datenbank speichern? Allgemeine Java-Themen 3
A Problem beim Starten der H2-Datenbank Allgemeine Java-Themen 4
S Datenbank Abfragen mit großen Datenmengen Allgemeine Java-Themen 22
G Datenbank-Anwendung schnell erstellen. Allgemeine Java-Themen 7
P Datenbank Tabelle spiegeln Allgemeine Java-Themen 22
E MySQL-Datenbank <-> HashMap/TreeMap Allgemeine Java-Themen 1
P Zugriff auf die DatenBank Allgemeine Java-Themen 44
H Daten aus MySQL datenbank auslesen und in ArrayList stecken Allgemeine Java-Themen 8
P Timestamp in eine Firebird-Datenbank einfügen Allgemeine Java-Themen 6
P Java Acces Datenbank Problem ! (Brauche eine Abfrage) Allgemeine Java-Themen 5
B Datenbank anlegen Allgemeine Java-Themen 10
N Datenbank vs. Filesystem Allgemeine Java-Themen 5
F datenbank oder csv etc Allgemeine Java-Themen 6
V Brauche Beratung in Sachen Java+Datenbank+Web Allgemeine Java-Themen 8
G Ab wann Datenbank verwenden Allgemeine Java-Themen 15
H Datenbank an ein Java Client Server Programm anschliessen Allgemeine Java-Themen 3
F lizenzfreie Datenbank für JAVA-Anwendung Allgemeine Java-Themen 3
S Zeilenausgabe Datenbank Allgemeine Java-Themen 2
S Datenbank Allgemeine Java-Themen 9
L Datenbank Abfrage (Felder&Tabelle nicht fix) in ArrayLis Allgemeine Java-Themen 4
S Java Datenbank auf Festplatte installieren Allgemeine Java-Themen 2
G JComboBox mit Werten aus einer Access Datenbank füllen Allgemeine Java-Themen 18
T Java Application Server + Datenbank von CD Allgemeine Java-Themen 8
G Abfrage in datenbank Allgemeine Java-Themen 5
G Daten aus MySQL-Datenbank an JFreeChart übergeben Allgemeine Java-Themen 3
D Userdaten + Datenbank? Allgemeine Java-Themen 11
G HSQLDB Datenbank-Dateien aus Jar-Datei lesen Allgemeine Java-Themen 5

Ähnliche Java Themen


Oben