1

Wir haben folgenden Anwendungsfall erstellen:Richtiger Weg Brute-Force-Angriffe zu dokumentieren und zu protokollieren, wenn ein Benutzerkonto

Benutzer können sie für ein Business-Konto anmelden, indem eine Validierung Form mit ihrer ID Füllung, Vor-, Nachnamen und Geburtsdatum ID ist etwas, das nur der Benutzer im Voraus weiß. Die Benutzer haben 5 Versuche, alle ihre Informationen zu entsprechen

Wir planen ein paar Tabellen in einer Datenbank zu halten, in dem speichern wir die Validierung

Table 1 columns: id, attempts 
Table 2 columns: id, fname, lname, dob 

Tabelle 1 und 2 versucht eine Eins-Beziehung . Hier ist ein Beispiel, was passiert, wenn der Benutzer versucht, den Vornamen, den Nachnamen und dob 5 mal zu erraten, bevor er gesperrt ist. Die Anwendung überprüft die Spalte Versuche der Tabelle 1, und wenn sie für eine bestimmte ID 5 oder mehr als 5 ist, wird das Benutzerkonto (mit dieser spezifischen ID) als gesperrt behandelt.

table 1 
id attempts 
1234 5 

table 2 
id fname lname dob 
1234 john  doe 19900101 
1234 jane  doe 19900101 
1234 jason doe 19900101 
1234 john  dae 20010102 
1234 roger smith 19960101 

Das Problem mit dem obigen Ansatz ist, dass wir nur die fehlgeschlagenen Versuche von ID verfolgen. Was passiert, wenn der Benutzer versucht, die ID und den Angriff zu ändern? indem Sie den Vornamen, den Nachnamen und den Namen beibehalten und die ID erraten?

Vielleicht muss ich das Design der Validierungstabelle und meinen Ansatz zu überdenken, um das Problem des Benutzers versuchen, ID zu erraten ?? Oder gibt es eine bessere Möglichkeit, über dieses Problem nachzudenken?

Edit: Dies ist eine REST API-URL mit einem Front-End-Client. Captcha könnte also die API nicht schützen ??

Antwort

0

Sie haben Recht, dass die "geheime" ID einen geringen Sicherheitswert hinzufügt, da es sich um den Parameter handelt, der brutal erzwungen werden kann. Wenn ein Angreifer den ersten, letzten, dob kennt, kann er nur IDs durchlaufen, bis er validiert.

Besser: Aussperrung einer IP-Adresse s nach 5 ungültigen Versuchen von einer Adresse. Das verhindert naive Arten von Brute-Forcing von einem einzelnen (oder wenigen) Computern.

Best: Um ein Bot-Netz oder automatisiertes System von Brute in einem vorbereiteten Mode zwingt zu verhindern, dann ein CAPTCHA Verwendung ist das traditionelle Sicherheitsmuster für die menschliche Registrierung zwingen.

Wenn ID das "Geheimnis" ist, sollten Sie auch sicherstellen, dass es lang genug ist (nicht nur vier Ziffern zum Beispiel). Könnten acht alphanumerische Zeichen genug Komplexität für das Risikoniveau liefern, das Sie hier tolerieren wollen? Abhängig von Ihrer Risikotoleranz und der Empfindlichkeit des Systems/der Daten.

BEARBEITEN: Zur Sicherung einer REST-API ... Wenn Sie nur Übermittlungen an die Rest-API von autorisierten GUIs zulassen möchten, können Sie eine von der GUI gesendete Nonce verwenden, die dann vom REST-Service validiert wird. (Ähnlich dem CSRF-Schutz.) Wenn Sie eine schnelle Übergabe an die API von anderen Programmen aus ermöglichen möchten, ist dies im Grunde genommen ein Rezept für Brute-Force-Angriffe. Die meisten großen Online-Dienste bieten keine API wie diese für die Registrierung. Sie können jedoch immer noch eine lange/komplexe ID und Sperr-IP-Adressen verwenden.

+0

Meine ist eine REST Api. Ich habe gerade die Frage mit diesen Informationen aktualisiert. Da ein Captcha eine Formulareinreichung verhindert, wie kann ich die REST API abschirmen? – user6123723