Session nach Ablauf eines Coountdowns zerstören.
Sven
- php
Hallo,
ich versuche gerade Spammer von meiner Seite fernzuhalten.
Dazu möchte ich ein Skript schreiben, dass beim Absenden einer Mail eine Session erzeugt, die nach 1 Minute abläuft.
D.h. der Spammer kann damit erstmal nur 1 Mail pro Minute versenden, da das versenden der Mail funktioniert nur dann, wenn die entsprechende Session nicht vorhanden (sprich abgelaufen) ist.
Weiß jemand von Euch wie ich den entsprechenden Countdown realisieren kann?
Grüsse,
Sven
Hallo Freunde des gehobenen Forumsgenusses,
D.h. der Spammer kann damit erstmal nur 1 Mail pro Minute versenden, da das versenden der Mail funktioniert nur dann, wenn die entsprechende Session nicht vorhanden (sprich abgelaufen) ist.
Dir ist schon klar, dass es Menschen gibt die schneller tippen und Bots, die länger warten um menschliches Verhalten nachzuahmen?
Zu prinzipiellen Vorgehen: Erzeuge eine SessionID (md5(microtime().serialize($_SERVER).serialize($_REQUEST))) und schreibe sie in ein verstecktes Eingabefeld und in eine Datenbank (das kann auch eine Text-Datei sein, SQL ist nicht zwingend erforderlich). Wenn nun ein POST-Request mit SessionID empfangen wird löschst du alle IDs die älter als n Sekunden sind und schaust ob die ID dann noch existiert.
Gruß
Alexander Brock
hi,
Zu prinzipiellen Vorgehen: Erzeuge eine SessionID (md5(microtime().serialize($_SERVER).serialize($_REQUEST))) und schreibe sie in ein verstecktes Eingabefeld und in eine Datenbank (das kann auch eine Text-Datei sein, SQL ist nicht zwingend erforderlich).
Die Datenbank, bzw. generell das serverseitige Ablegen halte ich auch für entbehrlich.
Um den zeitlichen Abstand zu prüfen, kann man den Timestamp ja auch ruhig im Klartext übergeben, damit ist ein einfacher Vergleich möglich.
Damit dieser Timestamp nicht manipuliert werden kann, übergibt man dann zusätzlich md5($timestamp.$geheimerString) - damit kann man kontrollieren, ob der Timestamp "echt" ist.
gruß,
wahsaga