Ich habe eine Website-Registrierungsseite, und ich versuche, eine Liste von dem, was ich tun muss, um es zu schützen, zu kompilieren. Wenn Sie einen Angriff kennen, nennen Sie ihn bitte und beschreiben Sie ihn am besten mit einer kurzen Beschreibung seiner Lösung. Alle hilfreichen Antworten/Kommentare erhalten eine Stimmenmehrheit.Welche Angriffe können auf eine Registrierungsseite gerichtet werden
Hier ist, was ich im Sinn habe bisher: (und das Hinzufügen, was andere darauf hindeutet, Puh, das Hinzufügen anderer Eingang viel Arbeit entpuppte, aber bitte immer wieder kommen sie, die ich hier werde weiter hinzuzufügen.)
- SQL-Injektionen: vom Benutzer Eingabedatum. Lösung: vorbereitete Aussagen.
[AviD] "Stored Procedures auch zusätzliche Vorteile (oben Prepared Statements), wie die Fähigkeit der geringsten Rechte auf dem DB"
- Guter Punkt, bitte erläutern. Ich dachte, gespeicherte Prozeduren wären die gleichen wie vorbereitete Aussagen. Was ich meine diese Anweisungen waren Sie bindParam die Variablen. Sind sie anders?
Das Passwort vor der Eingabe von db nicht hashen. Lösung: Hash-Passwörter.
- [AviD] "Re Hashing, das Passwort benötigt ein Salz (zufälliger Wert vor dem Hashing zum Passwort hinzugefügt), um Rainbow Table-Angriffe und Angriffe mit demselben Passwort zu verhindern."
- "das verwendete Salz sollte für jeden Benutzer unterschiedlich sein."
- Guten Punkt, ich habe eine Frage dazu: Ich weiß Salz sollte zufällig sein, sondern auch einzigartig. Wie stellen wir den eindeutigen Teil her, um dem Angriff mit dem gleichen Passwort entgegenzuwirken? Ich habe darüber gelesen, aber noch keine klare Antwort darauf bekommen.
[Inshallah] „Eigentlich Ich denke, es spielt keine Rolle, ob es Konflikte gibt oder nicht, das Salz dient lediglich der Vermeidung von Tabellen-Lookups, so dass selbst ein 2-Char-Salz ein (kleiner) Gewinn ist, selbst wenn es Konflikte gibt über eine kryptografische nonce hier, die absolut nicht wiederholen müssen. Aber ich bin kein cryptianalyst "
- Guter Punkt, aber hat jemand Disclaimer in diesem Punkt?
Dos Angriffe ?! (Ich schätze, das gilt auch für Anmeldeformulare)
[Pascal Thivent] "Verwenden Sie HTTPs, wenn Sie sensible Daten wie ein Passwort eingeben." "für Man-in-the-Middle-Attacken, vorausgesetzt, dass geeignete Cipher Suites verwendet werden"
- Was sind die "angemessenen Cipher Suites", auf die hier Bezug genommen wird?
[Koosha] "Verwenden Sie HTTPs oder verschlüsseln Sie Passwörter vor der Einreichung mit MD5 und Javascript auf der Clientseite."
- ich MD5 nicht einverstanden und weiß nicht, wie auf Client-Seite verschlüsselt, überhaupt keinen Sinn für mich macht. Aber andere Eingang willkommen.
[Dan Atkinson] Ausschließen bestimmte Benutzernamen, um Konflikte mit bestehenden Seiten zu verhindern, die den gleichen Namen haben (siehe Originalbeitrag für vollständige Antwort und Erklärung)
- [Koosha] "zulässige Zeichen für Benutzername.für zB Alphabet und Zahlen, Strich (-) und Punkt (.) "
- Bitte genau erklären warum?
- [Stu42] „Use-Check Captcha so dass ein Bot nicht automatisch mehr Konten erstellen kann“
- [AviD] „Es gibt bessere Lösungen als Captcha, aber für eine Website mit niedrigem Wert kann es gut genug sein.“
- @AviD, bitte erwähnen Sie ein Beispiel?
[rasputin] "Verwendung E-Mail-Überprüfung"
[Andrew und epochwolf] XSS-Angriffe
- Obwohl ich einfach nicht mit Andrew und epochwolf einverstanden < filtern und > oder < in &tl; und> in > umwandeln. Die meisten Meinungen schlagen eine Bibliothek wie HTML Purifier vor. Irgendwelche Eingaben dazu?
Dies ist eine Art Community-Wiki-Frage, da es ziemlich schwierig ist, die "richtige Antwort" zu finden. Da dies nicht der Fall ist, sollten Sie in Erwägung ziehen, die Ideen anderer Ihrer Frage hinzuzufügen, um einen schnellen Bezugspunkt für andere zu schaffen. –
Re SQL Injection, nicht mit vorbereiteten Anweisungen allein genügen, müssen Sie auch eine ordnungsgemäße Eingabe Validierung durchführen. Gespeicherte Prozeduren bieten auch zusätzliche Vorteile (über vorbereitete Anweisungen), z. B. die Möglichkeit der geringsten Berechtigung für die DB. – AviD
Re Hashing, das Passwort benötigt ein Salz (Zufallswert vor dem Hashing zum Passwort hinzugefügt), um Rainbow Table Attacken und same-password Attacken zu verhindern. – AviD