Richtige Art und Weise zu bereinigen, einen Passwort?
Wie kann ich bereinigen, einen string, der erhält einen hash+random salt?
Kann ich entfernen Sie die Leerzeichen, prüfen Sie die Länge, und verwenden Sie mysqli_real_escape_string, aber reicht das? Die filter_var ist wirklich nützlich, aber es kann nicht helfen, in diesem Fall, richtig?
Desinfizieren zur Vorbereitung der string für was genau?
in diesem Fall ist zu prüfen, ob der hash in der Datenbank vorhanden ist
Sorry, nicht immer. Sie nur hash der Eingabe und prüfen Sie, ob das Ergebnis in der Datenbank vorhanden ist... Was gibt es da zu bereinigen?
in diesem Fall ist zu prüfen, ob der hash in der Datenbank vorhanden ist
Sorry, nicht immer. Sie nur hash der Eingabe und prüfen Sie, ob das Ergebnis in der Datenbank vorhanden ist... Was gibt es da zu bereinigen?
InformationsquelleAutor daniel__ | 2011-03-22
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn du gehst, um die variable in eine SQL-Abfrage, dann müssen Sie entweder nennen
mysqli_read_escape_string
oder (noch besser!) verwenden prepared statements.Gibt es keine andere sanitization Sie müssen zu tun. Wenn jedoch der Wert kommt von Freiform-Benutzereingabe (z.B. ein Textfeld anstelle eines drop-down-Menü), dann Sie sollten auch trimmen Leerzeichen und Kleinbuchstaben als Hilfestellung für die Anwender (Korrektur der zufälligen Fehler, die Sie machen könnte). Es kommt wirklich auf die Anwendung an.
Den Titel kann sagen, das Passwort, aber die Frage sagt hash+salt. Gewährt, Kleinschreibung das Salz wird ihn brechen, aber ich denke, Sie werden Zustimmen, dass im Allgemeinen die Idee ist ok. Und ich wollte sagen "je nach Anwendung", also tun Sie es nicht zu, die Namen von Personen, aber tun Sie es auf der Kreditkarte zahlen.
können Sie nicht mit einem regulären Ausdruck auch inforce seltsame Zeichen?
danke, ich verwende prepared statements
Kleinschreibung oder uppercasing das Passwort ist eine sehr schlechte Idee. Trimmen es ist gut, denn es wird nur töten Räume/neue Linien/etc. am Anfang und am Ende des Passworts. Es gibt einen Grund dafür, dass ein gutes Passwort besteht sinnvollerweise aus groß-und Kleinbuchstaben, es verdoppelt die Anzahl der möglichen Zeichen-Kombinationen benötigt, um zu replizieren, das Passwort.
InformationsquelleAutor Jon
Nur klar zu sein, die Sie erhalten, von einer nicht vertrauenswürdigen Quelle ein hash (effektiv zufällige Daten) + Salz (wirklich zufällige Daten), und Sie wollen zu 'bereinigen'? Es ist wohl eine definition von geistiger Gesundheit ist, gilt (a-Daten-Formate wie base64-Codierung, eine maximale /erwartete Länge), aber ich vermute stark es ist eine funktionale Sicherheit der Fehler dort irgendwo.
Meisten vor allem, warum sind Sie der Annahme einer hash+Salz aus einer nicht vertrauenswürdigen Quelle, anstatt zu akzeptieren, ein Passwort, und der transformation in Ihrer gewohnten Umgebung? Die Annahme einer hash+Salz aus einer nicht vertrauenswürdigen Quelle wahrscheinlich verwandelt Sie in plain-text-äquivalente (verlieren Sie die Vorteile, die Sie bekam von hashing und salting das original-Passwort).
InformationsquelleAutor Slartibartfast
Zuerst überprüfen, dass das Passwort entspricht Ihrem vorgegebenen Prüfregeln. Sie können einen regulären Ausdruck für diese. Oft Passwörter konsequent von a-z, 0-9, vielleicht ein paar Satzzeichen und müssen innerhalb einer bestimmten Länge, sagen wir 6-12 Zeichen. Verwenden
preg_match()
überprüfen Sie die Zeichenfolge für deren Inhalt und Länge. So etwas wiepreg_match('/^[a-z0-9]{6,12}$/i',$pass)
könnte der Anfang sein.Anschließend können Sie das Kennwort gehasht. Sie können die Funktion
crypt()
zu tun. Dadurch wird eine one-way verschlüsselte Zeichenfolge, die Sie verwenden können, um den späteren Vergleich, wenn der Benutzer versucht, sich zu authentifizieren.Schließlich, um zu speichern das Kennwort, ja mit
mysqli_real_escape_string()
wird den trick tun, um vorzubereiten, die Sie in Ihre SQL-insert-oder update-Anweisung.Speichern Sie den hash, nicht das Passwort. -1 bis Sie verdeutlichen diesen Aspekt.
Ein starkes Passwort ist kein Passwort, es ist ein passphrase.
Technisch eine passphrase kann immer noch schwach und ein Passwort stark sein kann, aber ich Stimme im Geist so weit wie best practices gehen. Mein vorheriger Kommentar war von 5 Jahren, wenn die Sonderzeichen Methode war mehr angenommen, aber ich empfehle die correcthorsebatterystaple Methode in diesen Tagen. Auch in Bezug auf die hash - nicht sicher, ob Sie genug rep zu Bearbeiten Antworten, aber das könnte besser sein, als downvoting, wenn Sie sehen, Fälle, in denen sehr alte Antworten sind unklar, über gefährliche Praktiken. Der Benutzer, den Sie sprechen, noch nicht gesehen in einem Jahr zum Beispiel.
Ich habe gesehen, dass ist 5 Jahre alt, aber ein update kann nicht Schaden und ja, ich habe genug Ruf zu Bearbeiten, aber wenn ich den Beitrag editieren, das poster wird nichts lernen und konnte den gleichen Fehler machen in Zukunft. Wenn er nicht auftaucht, werde ich es Bearbeiten, schließlich.
InformationsquelleAutor Andrew Yochum