Hallo,
@ Daaron,
Ich versteh nicht, wo ein Sonderzeichen ein Problem darstellen sollen.
Kurzes Beispiel:
Wenn ich eine Datenbank abfrage habe:
PHP:
SELECT * FROM `tabelle` WHERE `password`='$passwort';
und ich habe ein schlecht gecodetes script, welches die übergebenen Werte nicht entkräftet,
dann kann ich in mein passwort, username usw. einfach folgendes eingeben:
PHP:
''; DROP DATABASE `datenbank`;--
und schon lösche ich mit einer einzigen abfrage gleich die gesammte Datenbank.
Es gibt dort viele Methoden wie ich die Datenbank mittels eingaben vom User beeinflussen kann.
Und wenn ich als Programmierer so aus angst vor Hackern jede eingabe vom User entkräften lasse, aber bei der eingabe von Passwörtern die sonderzeichen als solche bestehen lasse, ist das höchst Fahrlässig, dann öffne ich ja Tor und Türe.
Nix, was ein Botnetz aufhält. Primäre Angreifer sind heute doch keine einzelnen Rechner mehr, sondern Command & Control - Server.
Natürlich hast du recht, und man ist mit dem was ich geschrieben habe ungeschützt gegen Angriffe von Botnetzen, um meinen Vorpost zu ergänzen: der Cracker hätte aber einen mehr aufwand, was ihn bei einem kleinem Shop evtl. schon aufhällt, aber wenn man ihn von seinem Ziel nicht abbringen lässt, könnte man z.B. überprüfen wie viele Anfragen mit demselben Aufruf (Nutzername = HalloWelt) es gibt, und dementsprechend deaktiviert man dann für eine gewisse zeit die Login Funktion beispielsweise für 1 Stunde. (Hat ein Vorposter ja bereits geschrieben).
Ich denke dass man sich vor Angriffen wie Botnetzen schützen kann, und auch einen "Notfallplan" für die Passwörter haben kann: z.B. eine Verschlüsselungstechnik welche keine Kollisionen verursacht, ohne dass der Nutzer dazu gezwungen werden muss, ein Sonderzeichen einzugeben.
@ Dese
es ist scheiß egal was du an das passwort noch drannhängst oder nicht. merhfaches hashen erhöht die kollisionswkt. das problem ist nicht die eindeutigkeit der eingabe, das problem ist, dass die ausgabe (ergebnis des hashens) für mehrere eingaben in frage kommt und das verschlimmert sich im allgemeinen (das muß es nicht, jeh nach verfahren, aber ist bei den gängigen hash-funktionen der fall).
Tut mir leid, vergiss den Satz von mir bitte, das war eine Vollkommene Falschaussage, die Hashes die am ende rauskommen wären natürlich dieselben wenn ich beispielsweise "haus" Hashe und bei dem wort "Bär" der geiche raus kommt, in diesem fall würde es natürlich eine Kollision geben.
Die von mir beschriebene Funktion wäre jedoch in sachen Decrypt recht knifflig, und wenn ich brute force unterbinden kann, braucht der Cracker nur zu wissen, wie ich den salt gesetzt habe, und was ich verändert habe, um die Verschlüsselung zu knacken. Heißt: Er müsste einsicht auf die php Dateien besitzen um herauszufinden was die Passwörter bedeuten.
Oder liege ich da falscher ansicht?