Ich habe eine Art von Chat/Forum-Anwendung, die nach neuen Nachrichten mit regelmäßigen Abfragen (alle 15 Sekunden) mit jQuery Ajax überprüft. Ich habe mich gefragt, ob ich das Problem von Benutzern lösen kann, die versuchen, "witzig" zu sein, indem sie mehrere gleiche Browser-Instanzen laden, mit vielen Tabs, die alle auf dieselbe Anwendung verweisen. Jede Registerkarte sendet eine Ajax-Anforderung, die möglicherweise einen Server überlaufen kann, wenn mehrere Benutzer dasselbe tun.Wie umgehen Server-Flooding durch Benutzer unzählige Tabs öffnen?
Ich speichern Sitzungen in einer Tabelle zusammen mit der letzten Zugriffszeit und IP-Adresse, die gut funktioniert, solange Benutzer nicht den gleichen Browser verwenden. Ich könnte einen eindeutigen Identifizierer speichern, der mit der ajax POST- oder GET-Anfrage gesendet wird, aber das würde Probleme verursachen, wenn ein normaler (nicht missbräuchlicher) Benutzer seine Seite aktualisiert, was dann einen neuen Identifizierer erzeugen würde.
Das ist noch kein wirkliches Problem, aber fangen Sie es besser, bevor jemand denkt, das System so zu missbrauchen :) Irgendeine Idee, wie man das macht?
Die einzige Sache, die ich denken könnte, dass Sie möglicherweise tun könnte, ist eine Art Begrenzung der Geschwindigkeit (d. H. Begrenzen Sie die Anzahl der Abfragen Anfragen pro Sitzung/Zeitraum). –
Hmm, daran dachte ich noch nicht. Ich habe Einschränkungen, die die Ajax-Abfrage nach 5 Minuten Inaktivität stoppen, aber ich könnte sie etwas erweitern. – Sempiterna
Eigentlich kann das nicht wirklich mit PHP gemacht werden, da dies immer noch eine Ajax-Anfrage erfordert. Ist es möglich, es mit Javascript zu begrenzen? Mit anderen Worten, kennen alle Tabs im selben Browser die Anforderungen des jeweils anderen, und begrenzen sie dies mit javacsript? Gibt es im Grunde einen internen Browser-Zähler, der sieht, dass gerade eine Anfrage in Tab X gemacht wurde, und Code dort drin hat, so dass der Tab Y keine Ajax-Anfragen mehr sendet? – Sempiterna