Java-Applet -> MySQL Datenbank

Status
Nicht offen für weitere Antworten.
A

andi565

Gast
Hallo,

gibt es eine Möglichkeit, mit einem Java-Applet mittels JDBC-Treibern auf eine MySQL Datenbank zuzugreifen, ohne das jeder das Datenbank Passwort mittels dekompilieren auslesen kann?

Freue mich auf Hinweise :shock:
 

kleiner_held

Top Contributor
Nein - außer du läßt das Passwort explizit eingeben.

Abgesehen davon ist eine Direktverbindung vom Applet zu DB ganz schlechter Stil und kann auch an den Sicherheitseinstellungen der Sandbox des Browsers scheitern (üblicherweise sind ausgehende Verbinungen nur zu dem Server erlaubt von dem das Applet geladen wurde).

Üblich ist, vom Applet auf einen Server zuzugreifen (z.B: per HTTP oder HTTPS) und der Server hat im Hintergrund die DB.
 

L-ectron-X

Gesperrter Benutzer
Über Middleware. Bspw. über RMI. Dazu musst du auf einem Rechner im Netz einen RMI-Server laufen lassen, der die Vermittlung übernimmt. Der RMI-Server könnte dann das Passwort der DB übergeben, der Client bekommt davon nichts mit. Das Applet muss dazu signiert sein und die Download-Größe des Applets wird auf Grund des DB-Treibers etwas mehr in Anspruch nehmen.
 

abollm

Top Contributor
andi565 hat gesagt.:
Hallo,

gibt es eine Möglichkeit, mit einem Java-Applet mittels JDBC-Treibern auf eine MySQL Datenbank zuzugreifen, ohne das jeder das Datenbank Passwort mittels dekompilieren auslesen kann?

Freue mich auf Hinweise :shock:

Was genau meinst du denn damit? Meinst du mit dekompilieren knacken?

Folgende Szenarien fallen mir spontan ein:
==============================
Mit einem (i.d.R. aufwändigeren) MITM-Angriff kann ein Angreifer grundsätzlich ein Passwort abfangen. Falls das Passwort nicht verschlüsselt vom Client (dein Applet) zum DB-Server (MySQL-DB) gesendet wird, liegt hier für einen Angreifer die einfache (Standard-)Situation vor.

Auch MySQL speicher m.W. nur entsprechende Hash-Werte (User/Kennwort) innerhalb der DB-Engine, sodass ein Angreifer grundsätzlich erhöhten Aufwand zum Knacken des Passworts/der Passwörter treiben muss, wenn er das jeweilige Passwort _nicht_ im Klartext abfangen kann.

Hth
 
A

andi565

Gast
Danke für die bisherigen Antworten, aber hier nochmal genauer beschrieben was ich meine:

Angenommen, ich programmiere ein Java-Applet für einen Onlinedienst. Jeder User meldet sich dazu mit Username und Passwort an (um diese Verbindung gehts mir aber vorerst nicht) und kann sich dann nach Prüfung seines Usernamen und des Passwortes in der MySQL Datenbank im Mitgliederbereich bewegen.

Um auf eine MySQL Datenbank zuzugreifen, braucht man ja in der Regel einen Usernamen und ein Passwort.
Diese Daten müssen irgendwo gespeichert werden, jedes mal eingeben ist nicht möglich, da diese Daten nur mir (dem Webspace-Besitzer / Onlinedienstbetreiber) bekannt sind. Wenn ich diese Daten jetzt im Java-Quellcode hinterlege, um mittels JDBC-Treiber auf die MySQL Datenbank zuzugreifen, kann die Daten im Prinzip jeder durch decomplilieren des Applets auslesen. Und genau das möchte ich möglichst einfach (ohne speziellen Server) verhindern.

kleiner_held hat gesagt.:
Üblich ist, vom Applet auf einen Server zuzugreifen (z.B: per HTTP oder HTTPS) und der Server hat im Hintergrund die DB.
Meine genauere Beschreibung müsste nun genau auf das zutreffen, nur habe ich da das beschriebene Problem...
 

abollm

Top Contributor
andi565 hat gesagt.:
Danke für die bisherigen Antworten, aber hier nochmal genauer beschrieben was ich meine:

Angenommen, ich programmiere ein Java-Applet für einen Onlinedienst. Jeder User meldet sich dazu mit Username und Passwort an (um diese Verbindung gehts mir aber vorerst nicht) und kann sich dann nach Prüfung seines Usernamen und des Passwortes in der MySQL Datenbank im Mitgliederbereich bewegen.

Um auf eine MySQL Datenbank zuzugreifen, braucht man ja in der Regel einen Usernamen und ein Passwort.
Diese Daten müssen irgendwo gespeichert werden, jedes mal eingeben ist nicht möglich, da diese Daten nur mir (dem Webspace-Besitzer / Onlinedienstbetreiber) bekannt sind. Wenn ich diese Daten jetzt im Java-Quellcode hinterlege, um mittels JDBC-Treiber auf die MySQL Datenbank zuzugreifen, kann die Daten im Prinzip jeder durch decomplilieren des Applets auslesen. Und genau das möchte ich möglichst einfach (ohne speziellen Server) verhindern.

Hm, ehrlich gesagt, versteh ich dein genaues Problem nicht. Eigentlich benötigst du so eine Art Session-Handling, d.h. du musst in deinem Applet pro offener Session mit der DB das Kennwort im Speicher halten. Wo ist dann das Problem? Oder willst du das Kennwort Session-übergreifend speichern, so à la Cookie-Lösung? Also jedes Mal, wenn sich ein Benutzer erneut anmeldet, geht das dann automatisch?
:?:
 

kleiner_held

Top Contributor
Wenn du darauf bestehst, dass deine Client-Anwendung (das Applet) in einem Mehrbenutzer-System direkt mit der Datenbank kommuniziert, wird es meiner Meinung nach keine vernünftige Lösung geben (hinsichtlich Zugriffskontrolle).

Der Anwendungsfall schreit quasi nach einer 3-Schichten-Architektur.
 
G

Guest

Gast
abollm hat gesagt.:
andi565 hat gesagt.:
Danke für die bisherigen Antworten, aber hier nochmal genauer beschrieben was ich meine:

Angenommen, ich programmiere ein Java-Applet für einen Onlinedienst. Jeder User meldet sich dazu mit Username und Passwort an (um diese Verbindung gehts mir aber vorerst nicht) und kann sich dann nach Prüfung seines Usernamen und des Passwortes in der MySQL Datenbank im Mitgliederbereich bewegen.

Um auf eine MySQL Datenbank zuzugreifen, braucht man ja in der Regel einen Usernamen und ein Passwort.
Diese Daten müssen irgendwo gespeichert werden, jedes mal eingeben ist nicht möglich, da diese Daten nur mir (dem Webspace-Besitzer / Onlinedienstbetreiber) bekannt sind. Wenn ich diese Daten jetzt im Java-Quellcode hinterlege, um mittels JDBC-Treiber auf die MySQL Datenbank zuzugreifen, kann die Daten im Prinzip jeder durch decomplilieren des Applets auslesen. Und genau das möchte ich möglichst einfach (ohne speziellen Server) verhindern.

Hm, ehrlich gesagt, versteh ich dein genaues Problem nicht. Eigentlich benötigst du so eine Art Session-Handling, d.h. du musst in deinem Applet pro offener Session mit der DB das Kennwort im Speicher halten. Wo ist dann das Problem? Oder willst du das Kennwort Session-übergreifend speichern, so à la Cookie-Lösung? Also jedes Mal, wenn sich ein Benutzer erneut anmeldet, geht das dann automatisch?
:?:
Mein Problem:

Im Quelltext öffne ich mit folgenden Code eine Datenbank-Verbindung:
Class.forName("com.mysql.jdbc.Driver");
Connection cn = DriverManager.getConnection("jdbc:mysql://localhost:3306/meinedb", "admin", "passwort" );

Das Applet kann im Prinzip jeder runterladen und decomplilieren und hat damit Zugriff auf meine MySQL Datenbank
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
A MySQL+Webserver --(Java-Applet)----> Client Datenbankprogrammierung 11
M Mit Java Applet via HDBC auf MySQL DB zugreifen? Datenbankprogrammierung 2
F Problem mit MySQL-Datenbank und Java-Applet Datenbankprogrammierung 2
I Java (J)Applet und und RMI (momentan eher RMI) Datenbankprogrammierung 6
Juelin Java und MySQL MariaDB - WHERE-Klausel Datenbankprogrammierung 17
P Reicht finally nicht um DB connections zu schließen in (altem) Java? Datenbankprogrammierung 4
A Java DB Server lässt sich nicht starten Datenbankprogrammierung 3
TheSkyRider MySQL Datenbankzuordnung in Verbindung mit Java Datenbankprogrammierung 7
U SQL Server mit Java verbinden Datenbankprogrammierung 5
D SQLite Datenbank in Android Studio (Java) durchsuchen Datenbankprogrammierung 3
TH260199 Java-Programm. Probleme bei der Umsetzung von einer Kontaktverwaltung. Datenbankprogrammierung 7
S Das printen der Ausgabe des Oracle-SQL-Statements in der Java-Eclipse-Konsole funktioniert nicht Datenbankprogrammierung 6
Zrebna Wie mittels Hibernate eine Join-Tabelle als eigene Java-Klasse erstellen? Datenbankprogrammierung 5
Zrebna Noobfrage: Konvertierung von SQL-Datentyp 'timestamp with time zone' in Java-Datentyp Datenbankprogrammierung 3
Zrebna Lediglich interne DB-Verbindungen (Connections) auslesen - mittels Java Datenbankprogrammierung 4
berserkerdq2 Was genau muss ich bei date eingeben, wenn ich in Java eine Spalte definiere, die date ist? Datenbankprogrammierung 1
berserkerdq2 Was kann passieren, wenn ich in java einstelle, dass der Fremdschüssel ein Attribut ist, welches selber kein Primärschlüssel ist? Datenbankprogrammierung 4
berserkerdq2 Foreign key einstellen java Datenbankprogrammierung 4
nikgo Java SQL Ausgabe in Liste o.ä. abspeichern um mit dem Ergbnis "zu arbeiten"? Datenbankprogrammierung 5
S Datenbankprogrammierung in Java unter NetBeans 12 funktioniert nicht! Datenbankprogrammierung 1
Beginner22 Zugriff auf Datenbank aus Java über mariadb Datenbankprogrammierung 3
S ODBC Treiber in Java Editor einbinden Datenbankprogrammierung 3
H Oracle Resize eines Images in Java und Rückgabe des Image als BLOB an die Oracle Datebank Datenbankprogrammierung 14
H Java Class zum komprimieren von Jpeg-Images zum Einbinden in Oracle DB - Bild als blob (in und out) Datenbankprogrammierung 23
V SQLite java.sql.SQLException: no such column: Datenbankprogrammierung 18
B Wie kopieren ich eine Spalte von einer Tabelle in eine andere Tabelle SQLite durch java code? Datenbankprogrammierung 26
D Daten aus der Firebase-Echtzeitdatenbank abfragen und in Variablen speichern (JAVA) Datenbankprogrammierung 0
Slaylen Java List Suchen mit eigenem Generischen Datentyp Datenbankprogrammierung 10
N java sql abfrage bestimmer Datumszeitraum Datenbankprogrammierung 9
D SQL Server Android App: 'int java.lang.String.length()' on a null object reference Datenbankprogrammierung 15
P USER Management in SQL übergreifend auf JAVA Programm Datenbankprogrammierung 1
H MySQL Verbindung Datenbank und Eclipse (Java) Datenbankprogrammierung 5
N Java Abfrage über GUI, Daten hinzufügen Datenbankprogrammierung 54
N Java, sql, jar, JDBC-Treiber in Classpath Datenbankprogrammierung 8
N java SQL JAR - Probleme Datenbankprogrammierung 18
N SQL Datenbank Spalte in Java Array Datenbankprogrammierung 2
N SQL-Statement Java Variable in SQL DB einfügen Datenbankprogrammierung 1
S Verbindung von einer Excel Datei zu Java Datenbankprogrammierung 2
H suche eine Login system Bibliothek für Java Datenbankprogrammierung 5
T Java Spiel Daten speichern Datenbankprogrammierung 1
C Java MySQL check if value exists in database Datenbankprogrammierung 2
N Sqlite DB mit Java wird auf Linuxsystem nicht gefunden Datenbankprogrammierung 9
L Mybatis Datenbankabfragen in Java Datenbankprogrammierung 1
H MariaDB-Zugriff mittels Java SE Datenbankprogrammierung 3
J Java fügt Datensätze ein aber diese werden nicht richtig abgefragt Datenbankprogrammierung 3
S Datenbank MySQL und Java Datenbankprogrammierung 8
S Beispiel-Blockchain + GUI mit Java erstellen Datenbankprogrammierung 0
P Adressadministration mit Java und mySQL Datenbankprogrammierung 14
Trèfle SQLite SQL-Java Änderungen ausgeben Datenbankprogrammierung 1
Dimax MySQL Maximale Datenlänge für eine Spalte einer Datenbank in java ermitteln Datenbankprogrammierung 15
A MySQL Select und Insert in Java Datenbankprogrammierung 15
C Derby/JavaDB Auf Variable aus Link in java server page zugreifen Datenbankprogrammierung 4
platofan23 MySQL Java Programm findet Treiber für mySQL auf Debian-Server nicht? Datenbankprogrammierung 11
F MySQL Einfügen von Datensätzen über Java Datenbankprogrammierung 8
B CSV in Java einbinden und Rechnung Datenbankprogrammierung 7
L Speicherverbrauch Java Anwendung mit einer Datenbankanbindung Datenbankprogrammierung 19
X MySQL Java hat keinen Zugriff auf MySQL Datenbankprogrammierung 9
L Java- Zähle alle Werte aus der Tabelle von aktiver Zelle Datenbankprogrammierung 12
S Datenbank/Java true/false Datenbankprogrammierung 8
S Java und SQL-Befehle Datenbankprogrammierung 6
L INSERT INTO Befehl in Java Datenbankprogrammierung 8
L Datenbankprogrammierung mit Java und phpMyAdmin Datenbankprogrammierung 4
Korvinus Java mit Cassandra verbinden Datenbankprogrammierung 18
M SQL-Statement SQL mit Java, Update Fehler Datenbankprogrammierung 1
D Installation von MariaDB in java und eclipse Datenbankprogrammierung 2
H Datenbank Export mit Java Datenbankprogrammierung 3
I MariaDB-Verbindung in JAVA Datenbankprogrammierung 11
L Oracle Datenbank über Java aufrufen Datenbankprogrammierung 29
W Daten in Java intern abfragen Datenbankprogrammierung 1
W MySQL Ausgabe von Datenbank in Java-App Datenbankprogrammierung 6
D Java Datenbanken Datenbankprogrammierung 1
Y H2 H2 foreign key in Spark Java ausgeben Datenbankprogrammierung 1
J Java Eclipse Hilfe beim Programmieren Datenbankprogrammierung 7
K Java Object mit Hibernate in MySQL abspeichern Datenbankprogrammierung 1
R Java-Befehle/Operatoren für copy&paste Datenbankprogrammierung 2
C Mit asm laufende Java Anwendung manipulieren Datenbankprogrammierung 1
W Wie liest dieses Java-Programm der Compiler? Datenbankprogrammierung 3
K Java Datenbank auslesen Datenbankprogrammierung 8
G MySQL Java Problem: Nullpointer Exception obwohl Daten vorhanden sind? Datenbankprogrammierung 2
K HSQLDB .sql Script Aufruf über Java Datenbankprogrammierung 7
B Java Programm und Dantebank umlagern Datenbankprogrammierung 25
B MySQL bplaced Datenbank mit Java ansprechen Datenbankprogrammierung 11
F MySQL Wie kann ich in Java Datensätze aus einer MySQL Datenbank gezielt in einzelne Arrays schreiben? Datenbankprogrammierung 9
F Java Objekte in einer Datenbank speichern Datenbankprogrammierung 4
perlenfischer1984 Java Objecte speichern mit Hibernate ? Datenbankprogrammierung 2
B Probleme mit java.sql.SQLException: ResultSet closed Datenbankprogrammierung 21
O PostgreSQL Java Row Index erhalten Datenbankprogrammierung 1
dzim Cassandra Cluster DB und der Java-Treiber Datenbankprogrammierung 1
H Entity in Java implementieren Datenbankprogrammierung 13
V Fehler beim Generierung Fehler beim Generierung java.lang.ArrayIndexOutOfBoundsException: 0 Datenbankprogrammierung 12
J mySQL- Java Application - Zugriff über Internet Datenbankprogrammierung 3
D MySQL Many to Many Tabellen in Java abbilden? Datenbankprogrammierung 4
P Datanbank für Java-Programmierung Datenbankprogrammierung 10
F Java SQLite Error Datenbankprogrammierung 19
F SQL Datenbank an Java Code anbinden Datenbankprogrammierung 5
J Java 8 und Microsoft Access Database-Dateien(mdb) Datenbankprogrammierung 1
H HSQLDB Beim öffnen folgender Fehler: ... java.lang.NullPointerException Datenbankprogrammierung 1
H SHOW Tables in Java/MySQL Datenbankprogrammierung 8
M Verbindung von Java Programm zur Acccess Datenbank (mdb-Datei) Datenbankprogrammierung 0
M Feedback für neues Buch über "Java und Datenbanken" erwünscht Datenbankprogrammierung 8

Ähnliche Java Themen

Neue Themen


Oben