Ich bin ziemlich neu zu ExpressJS und ich muss die Verbindung mit dem Benutzer, wenn die Anzahl der fehlgeschlagen Logins für seine IP (in der Datenbank gespeichert) überschritten maximal zulässige Anzahl, aber ich kann keine Dokumentation finden, wie zu mach das. Es sieht aus wie server.close()
funktioniert, aber wie ich es verstehe, schließt es den gesamten Server, nicht nur einige Verbindung. Wie kann man die Verbindung von der ExpressJS Middleware trennen?ExpressJS Drop-Verbindung
Antwort
ExpressJS stellt keine Verbindung zum Browser her und verarbeitet nur HTTP (S) -Anfragen, daher gibt es keine Möglichkeit, sie zu löschen. Die Sockets bietet, aber a nehme an, dass das nicht dein Fall ist.
In diesem Fall können Sie eine Antwort mit einer Nachricht senden wie 'Die maximale Anzahl von Login-Versuchen wurde erreicht. Bitte versuchen Sie es erneut in * Minuten. Und vielleicht verstecken Sie das Login-Formular.
danke, und kann ich Sockets von NodeJS verwenden? – snowfinch27
sicher kannst du, hier die nette lib dafür: [socket.io] (http://socket.io/). Aber zu welchem Zweck brauchen Sie Steckdosen? –
Ich muss die Verbindung mit einem einzelnen Benutzer basierend auf der Anzahl der fehlgeschlagenen Anmeldungen (aus der Datenbank) schließen, und ich kann jetzt keinen anderen Weg finden, ich würde wirklich jede Hilfe schätzen – snowfinch27
Eine alternative Möglichkeit zum "Trennen" der Verbindung besteht darin, sofort res.end()
anzurufen, wodurch eine leere Antwort gesendet wird.
Der einzige Nachteil ist, dass die Anfrage immer noch durch jede vorherige Middleware geht, so dass sie nicht vor DoS-Angriffen auf Ihre Middleware schützen kann und nicht so effektiv ist wie das Fallenlassen der gesamten Verbindung bei einem DDoS-Angriff .
- 1. ExpressJS vs MeteorJS
- 2. ExpressJs mit Sequelize
- 3. ExpressJS statische Dateien
- 4. Expressjs Passwort Feld Validierung
- 5. expressJS Versprechen und Fehlerbehandlung
- 6. ExpressJS AngularJS POST
- 7. Angular Unbekannter Provider ExpressJs
- 8. Expressjs REST API Explorer
- 9. morgan deprecated expressjs
- 10. Möglicher Bindungsverlust in Expressjs?
- 11. .htaccess zu expressjs Routen
- 12. ExpressJs + Passport.js + MySQL Authentifizierung
- 13. ExpressJS & Websocket & Sitzung teilen
- 14. Beenden der ExpressJS-Anfrage
- 15. URL Neuschreiben mit ExpressJS
- 16. Expressjs Routen mit benannten Parametern
- 17. Async/Await - Typescript und ExpressJs
- 18. ExpressJS set/get/use cookies
- 19. Expressjs nicht statische Dateien erkennen
- 20. Erzwinge SSL mit expressjs 3
- 21. ExpressJS Multi Domain https hosting
- 22. Nodejs Clustering und expressjs Sitzungen
- 23. Knotencluster mit socket.io und expressjs
- 24. Multipart-/Formulardaten-Upload - Nodejs - expressjs
- 25. Piping Remote-Datei in ExpressJS
- 26. optionale Erweiterung in expressjs Route
- 27. Schnellstart der ExpressJS-Anwendung verstehen
- 28. Nodejs oder ExpressJS Windows-Authentifizierung
- 29. ExpressJS Render-Pfad mit Hash
- 30. ExpressJS/connect-mongo Update-Sitzung
Während es den Benutzer nicht daran hindert, Daten zu senden, können Sie 'res.end' direkt aufrufen, die Antwort wird eine" leere "HTML-Datei sein, die fast den gleichen Effekt hat. – DrakaSAN
@DrakaSAN Danke, es funktioniert wirklich, vielleicht ist das genau das, was ich brauche – snowfinch27
Ich würde vielleicht Cookie den Client auf den endgültigen fehlgeschlagenen Versuch, mit einem Datum Zeit, wenn Sie es getan haben. Fügen Sie dann benutzerdefinierte Middleware hinzu, um zu prüfen, ob Cookie und DrakaSAN funktioniert. Es bedeutet, dass Sie diese Middleware vor einer komplexeren Anfrageverarbeitung einsetzen können, ohne dass Abfragen in Ihre Datenbank gespammt werden. Der Klient kann es natürlich blockieren oder manuell löschen, also sollte es nicht Ihre einzige Prüfung sein. Nur ein Gedanke. – Mic