Einzelnen Beitrag anzeigen

alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#4

Re: Dummer SQL Fehler!?

  Alt 10. Apr 2006, 06:38
Na, ja, wie seht ihr das: 'User' = 'Benutzer' war noch nie wahr, denn diese beiden Strings sind nunmal nur semantisch äquivalent, aber vom ersten bis zum letzten Buchstaben unterschiedlich. .

In SQL werden Felder und Tabellen, mit '[]' eingefasst, wenn man Konflikte mit reservierten Wörten vermeiden will. Es sollte also so laufen:
Select * from [user] where [user]='Benutzerand [Password]=Password('passw') Grundsätzlich würde ich Feldnamen mit einem Prefix versehen, der für alle Tabellen unterschiedlich ist. Foreign Keys erhalten den Prefix der Fremdtabelle, damit sind 'Natural Joins' möglich, die vielleicht doch irgendwann im SQL Standard implementiert sind.

Mit Prefixen wäre die Abfrage eindeutig:
Select * from User Where usUser='Benutzerand usPassword = Passw('passw') Das Beste zum Schluss: Stimmt es, das die Hashfunktion im Server installiert ist? Dann muss ich ja nur einen SQL-Monitor auf den Server setzen und schon hab ich alle Passwörter! Implementiere die Hashfunktion lieber in einer Mittelschicht, sodaß ein potentieller Angreifer nur sowas sieht;Select * from User Where usUser='Benutzerand usPassword = 'F234SDFGs789HJKHJ' Damit kann er dann nicht allzuviel anfangen.
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat