Rate limiting, um bösartiges Verhalten in ExpressJS zu verhindern

8

Jemand hat mich auf einige Fehler in einer Anwendung aufmerksam gemacht, an der ich gerade arbeite (meistens in meinem JavaScript auf dem Frontend), was die Möglichkeit offen lässt, sagen wir, eine Menge Knöpfe gleichzeitig zu klicken und eine zu senden Tonnen von Transaktions-E-Mails. Das ist eindeutig nicht gut.

Ich denke, eine Möglichkeit, dies in ExpressJS zu handhaben, ist die Verwendung von app.all() , um die Anzahl der Anfragen zu zählen, die innerhalb eines bestimmten Zeitrahmens stattfinden. Ich würde dies in den Sitzungsmetadaten mit Zeitstempeln speichern, und wenn mehr als X Anfragen in Y-Zeit passieren, schneide ich sie für eine Weile ab, bis das Limit abläuft.

Hat jemand das schon einmal gemacht oder irgendwelche Tipps / Hinweise, um mir zu helfen? Etwas, das einfach in meine App eingefügt werden kann, ist besser. Danke!

    
Josh Smith 24.02.2012, 02:12
quelle

1 Antwort

2

Sie könnten das Objekt Collate auf Ihrer Webseite verwenden.

%Vor%

Wenn Sie möchten, dass eine Funktion einmal ausgeführt wird und nicht innerhalb der nächsten 1 Sekunde erneut ausgeführt wird. Wenn Sie beispielsweise verhindern möchten, dass der Benutzer ein Formular mehrmals sendet, tun Sie Folgendes:

%Vor%

Wenn Sie erwarten, dass ein Ereignis mehrmals ausgelöst wird und nur auf das letzte Mal reagieren soll, wenn es ausgelöst wird. Wenn Sie beispielsweise nach der Eingabe eines Benutzers suchen möchten, tun Sie Folgendes:

%Vor%     
Kernel James 24.02.2012 06:29
quelle