MySQL Problem mit SELECT bzw encoding

Sich

Mitglied
Moin alle zusammen.

Ich habe eine mySQL-Tabelle mit 3 Feldern (id: INT(11), name:VARCHAR(45), password:VARCHAR(40)), COLLATION ist auf "utf8 - utf-8_unicode_ci" gestellt.
In der Tabelle befinden sich Benutzer mit ihren Passwörtern. Eingetragen sind sie per Hand und nicht via der JAVA-Anwendung. Soll auch möglichst später so sein, da sie Daten eigentlich von einer anderen Instanz kommen. Jedoch sind die Passwörter mittels selbstgeschreibenen Cryptertools AES-codiert, eingetragen.

Ein Eintrag sieht dann in etwa so aus: 1, test, Bv^#�CnM^#�

Nun zu meinem Problem:

Ich verbinde mich mit name und password auf einem Server, der wiederum in der DB nachschaut ob diese kombie vrohanden ist und liefert dann die Anzahl zurück:
Java:
ResultSet rs = stmt.executeQuery("SELECT count(*) FROM users WHERE nickname = \"" + user.getName() + "\" and password = \"" + user.getPassword() + "\"");

if (rs.getInt(1) == 1) {
// logIn ausführen
}

rs.getInt() liefert jedoch 0

wenn ich das ganze etwas ändere Funktioniert der logIn:

Java:
ResultSet rs = stmt.executeQuery("SELECT * FROM users WHERE nickname = \"" + user.getName()  "\"");

if (rs.getString("password").equals(user.getPassword())) {
// logIn ausführen
}

Dazu ist zusagen, dass user.getPassword() ebenfalls einen verschlüsselten String hält.

Liegt es evtl am Encoding, dass die erste Anfrage kein Ergebnis liefert? Denn wenn das Passwort ja an die Java-Anwendung "übermittelt" wird, entspricht es ja dem user.getPassword(), soll heißen: eigentlich sind sie "gleich".
Hat jemand vielleicht na Ahnung?!

Schonmal vielen Dank für die Hilfe.

Gruß
Sich
 
G

Gast2

Gast
1) Gibt es einen Grund warum du das Passwort in der Tabelle ablegst? Das macht man eigentlich nicht, auch nicht verschlüsselt. Normalerweise legt man in der DB einen Hashwert des eigentlichen Passworts ab.

2) Wenn du die Passwörter in AES verschlüsselt ablegst würde ich zumindest noch ein Base64 drüber laufen lassen um einen reinen ASCII Datensatz zu bekommen. Das macht dir das debuggen viel leichter.

3) Benutze Prepared Statements.
 

Sich

Mitglied
Moin,

erstmal Danke für deine schnelle Hilfe.

1) Ja den gibt es: Wenn es ohne Hashen nicht geht, dann auch nicht mit.

2) Das hat zum Erfolg geführt.

3) Habe ich jetzt mal eingebaut.. Für meine eine SQL-Abfrage sehe ich darin jedoch keine Vorteile.

Nochmals vielen Dank und noch einen schönen Abend

Gruß
Sich
 
G

Gast2

Gast
Moin,

erstmal Danke für deine schnelle Hilfe.

1) Ja den gibt es: Wenn es ohne Hashen nicht geht, dann auch nicht mit.

Hmmm, das versteh ich nicht... Was ich meinte:

Normalerweise wird ein Passwort nicht gespeichert sondern nur der Hash des Passworts.

Z.B gibt der User das Passwort test123 ein. Darauf wird dann z.B. SHA1 angewendet und in der Datenbank wird 7288edd0fc3ffcbe93a0cf06e3568e28521687bc gespeichert

Um jetzt zu überprüfen ob der User das richtige Passwort angegeben hat wird auf seine Eingabe wieder SHA1 angewendet und in der Datenbank gesucht:
SQL:
WHERE password_hash = '7288edd0fc3ffcbe93a0cf06e3568e28521687bc'

So kann niemand (auch nicht ein Administrator) wenn er die Passwort Tabelle ausließt Rückschlüsse auf das eigentliche Passwort machen. (Solange der Hash gut ist...)

2) Das hat zum Erfolg geführt.

Gut, Problem gelöst.

3) Habe ich jetzt mal eingebaut.. Für meine eine SQL-Abfrage sehe ich darin jedoch keine Vorteile.

PreparedStatements sind meiner Meinung nach IMMER vorzuziehen. Klar hat man nicht den riesen Performance Vorteile bei einmaligen einfchen Queries aber dafür keine Probleme mit SQLInjections, falschen Quoting usw.
 

Sich

Mitglied
fassy hat gesagt.:
Hmmm, das versteh ich nicht... Was ich meinte:

Normalerweise wird ein Passwort nicht gespeichert sondern nur der Hash des Passworts.

Z.B gibt der User das Passwort test123 ein. Darauf wird dann z.B. SHA1 angewendet und in der Datenbank wird 7288edd0fc3ffcbe93a0cf06e3568e28521687bc gespeichert

Um jetzt zu überprüfen ob der User das richtige Passwort angegeben hat wird auf seine Eingabe wieder SHA1 angewendet und in der Datenbank gesucht:
SQL:
WHERE password_hash = '7288edd0fc3ffcbe93a0cf06e3568e28521687bc'

So kann niemand (auch nicht ein Administrator) wenn er die Passwort Tabelle ausließt Rückschlüsse auf das eigentliche Passwort machen. (Solange der Hash gut ist...)

Da hast du mit allem natürlich total Recht, wollte damit nur sagen, dass es aber ja nichts an der Tatsache nichts geändert hatte, dass die verschlüsselten Strings trotz Java-Gleichheit nicht mit denen in der DB übereinstimmten.
Trotzdem natürlich nochmals vielen Dank für deine Hilfe und auch deiner Erläuterung bezüglich der Passwortspeicherung.

Viele Grüße
Sich
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
A Problem mit einem Select-Befehl Datenbankprogrammierung 5
R Select und Insert in Schleife - Problem mit ResultSet Datenbankprogrammierung 2
J PC-Start Problem JDBC Connection Datenbankprogrammierung 10
C Problem mit Apache Poi Datenbankprogrammierung 6
N HSQLDB Problem mit Eclipselink in runnable Jar Datenbankprogrammierung 10
P GroupLayout-Problem Datenbankprogrammierung 12
F XAMPP max connections problem Datenbankprogrammierung 6
C MySQL Problem in phpMyAdmin Oberfläche Datenbankprogrammierung 5
C Problem with INSERT.............ON DUPLICATE KEY Datenbankprogrammierung 3
C Problem with insertion in database. Datenbankprogrammierung 7
F Problem mit Hibernate c3p0 Datenbankprogrammierung 2
W Problem mit Insert in zwei Tabellen Datenbankprogrammierung 8
G MySQL Problem mit MySQL verbindung Datenbankprogrammierung 8
A kleines Problem Datenbankprogrammierung 6
T Problem mit Datenbankverbindung Datenbankprogrammierung 22
V Derby/JavaDB updateRow Problem Datenbankprogrammierung 0
G MySQL Java Problem: Nullpointer Exception obwohl Daten vorhanden sind? Datenbankprogrammierung 2
Nuiton EmbeddedDriver Problem Datenbankprogrammierung 6
A MongoDB Passwort Problem Datenbankprogrammierung 0
O HSQLDB Hibernate Criteria Problem Datenbankprogrammierung 3
F MySQL JDBC Problem Datenbankprogrammierung 5
Anfänger2011 Datenbankstruktur/aufbau (theoretisches Problem) Datenbankprogrammierung 5
M Derby/JavaDB Drop Database problem Datenbankprogrammierung 3
M Derby/JavaDB NOT LIKE problem Datenbankprogrammierung 19
N HSQLDB Problem mit EntityManager Datenbankprogrammierung 7
B MySQL JPAContainer Problem Datenbankprogrammierung 4
K Eclipse Apache Derby Treiber Problem Datenbankprogrammierung 4
C Problem oder Denkfehler mit H2-Database Datenbankprogrammierung 3
E Wie kann man das Problem mit der BLOB-Spalte lösen? Datenbankprogrammierung 1
M Problem mit jcouchdb und CouchDB - UTF8 kein gültiger Zeichentyp Datenbankprogrammierung 4
T MySQL Problem mit Datenbankanbindung Datenbankprogrammierung 4
M INSERT-Problem = integrity constraint violation: foreign key no parent Datenbankprogrammierung 5
P SQL Query Problem Datenbankprogrammierung 14
A MySQL Problem bei Tabelle ausgeben Datenbankprogrammierung 3
Q MySQL JDBC-Treiber Problem Datenbankprogrammierung 2
B SQLite Problem bei Planung der Datenbank [Jeopardy] Datenbankprogrammierung 3
A Problem mit dem Import und Export von Bildern Datenbankprogrammierung 4
P Oracle Problem mit Umlauten Datenbankprogrammierung 9
A Problem mit Create-Statement Datenbankprogrammierung 9
D Problem mit COLUMN_IDENTIFIERS Datenbankprogrammierung 8
Bluedaishi MySQL Abfrage Problem :-) Datenbankprogrammierung 21
M Problem mit mehreren Datasourcen Datenbankprogrammierung 3
R Resultset.last() Problem Datenbankprogrammierung 12
M Problem GroupBy Datenbankprogrammierung 3
S CURRENT_DATE problem Datenbankprogrammierung 2
M Problem mt JPA Id-Generators Datenbankprogrammierung 18
Gossi Oracle Problem mit group by... Datenbankprogrammierung 22
M MySQL SQL Abfrage Problem Datenbankprogrammierung 6
R MS-SQL Express Login-Problem Datenbankprogrammierung 8
P Lazy-Fetchig und Session-Problem mit Hibernate Datenbankprogrammierung 4
N HSQLDB Problem beim Treiberladen im Jar Datenbankprogrammierung 6
M Problem beim Erstellen einer Query Datenbankprogrammierung 7
C Hibernate ManyToMany zusammengesetzter Primärschlüssel, problem. Datenbankprogrammierung 3
M Problem mit HQL Syntax Datenbankprogrammierung 5
K Db4o Delete Problem Datenbankprogrammierung 11
Mike90 Deadlock/Lock Problem Datenbankprogrammierung 4
T Access 32bit on Win7 64Bit ODBC Problem Datenbankprogrammierung 1
C unverständliches DB Problem (Es ist kein temporärer Systemtabellenbereich mit einer ausreichenden..) Datenbankprogrammierung 5
S ODBC Treiber Problem/oder unvermögen Datenbankprogrammierung 18
J Problem bei Boolean in PreparedStatement Datenbankprogrammierung 5
C MySQL Problem mit UPDATE Abfrage Datenbankprogrammierung 13
C Problem mit SQL-Abfrage Datenbankprogrammierung 5
K Problem mit Datenbankverbindung via Eclipse Datenbankprogrammierung 2
A Problem mit Eintragen von Daten in eine Datenbank mittels DAO Datenbankprogrammierung 4
S Oracle Problem mit PreparedStatement.setString(1,"str") Datenbankprogrammierung 10
B MySQL Problem mit Datenbankanbindung an MySQL Datenbankprogrammierung 2
N Problem bei Erstellung eines Index Datenbankprogrammierung 12
C Hibernate Property-Problem Datenbankprogrammierung 5
J MyBatis - Update Problem Datenbankprogrammierung 4
S JPA: Problem mit Update von Daten Datenbankprogrammierung 7
c_sidi90 Hibernate Problem Table doesnt excist Datenbankprogrammierung 8
M Problem mit JPA - OneToMany-Relation Datenbankprogrammierung 3
I Hibernate: Composite Foreign Key Problem Datenbankprogrammierung 14
S JPA OptimisticLocking Problem Datenbankprogrammierung 11
I Derby/JavaDB Problem mit Befüllung von Tabelle Datenbankprogrammierung 7
JavaKaffee Derby/JavaDB Quartz-WebAnwendung - Connection/Treiber Problem Datenbankprogrammierung 47
I Problem mit ResultSet Datenbankprogrammierung 2
L Excel in MySQL importieren Problem Datenbankprogrammierung 5
S Problem beim Anlegen einer Tabelle Datenbankprogrammierung 5
R MS Access mit Java Problem mit Update Statment Datenbankprogrammierung 13
T Problem beim schreiben von daten Datenbankprogrammierung 4
M MySQL getConnection - Verbindung Problem Datenbankprogrammierung 2
K Hibernate + MySQL Problem... Datenbankprogrammierung 2
I MySQL MySQL – Proxy Problem Datenbankprogrammierung 4
M Problem mit Hibernate und Named Query Datenbankprogrammierung 1
M Problem mit Hibernate und Access Datenbankprogrammierung 9
C firebird problem Datenbankprogrammierung 5
F Problem mit Datenbankabfrage Datenbankprogrammierung 7
K SQL Problem mit Date Datenbankprogrammierung 3
jeppi MySQL Design-Problem: DB-Verbindung herstellen und halten - JdbcRowSet / Idle-Timeout? Datenbankprogrammierung 9
J sql abfrage ... Problem mit Datumswert Datenbankprogrammierung 3
G MySQL Connection Problem Datenbankprogrammierung 3
O MySQL Problem mit Umlauten?! Datenbankprogrammierung 2
E Hibernate Problem bei bidirektionaler 1:n Verbindung Datenbankprogrammierung 2
D MySQL Problem beim einfügen von Double-Zahlen Datenbankprogrammierung 4
M Oracle Problem mit Resultset Datenbankprogrammierung 11
T Problem bei Zugriff auf Access Datenbank Datenbankprogrammierung 7
W jpmdbc Problem -Beispiel funktioniert nicht Datenbankprogrammierung 9
W Verständnis-Problem JPA Grundlagen Datenbankprogrammierung 5
M Problem Array in BLOB-Feld in DerbyDB zu speichern Datenbankprogrammierung 5

Ähnliche Java Themen

Neue Themen


Oben