2011-04-25 15 views
6

Mam formularz kontaktowy, który wysyła na moją skrzynkę e-mail, a ostatnio zostałem zaatakowany przez atak spamowy ... Otrzymałem jak noce 76k z tego samego adresu IP. To mnie bardzo wkurzyło. Co mogę zrobić, aby to naprawić? Wiem, że mogę zaimplementować captcha, ale nie chcę tego. : \

Co jeszcze mogę zrobić, aby zapobiec przesyłaniu wielu formularzy?

+0

Możesz użyć '$ _SESSION', aby zapisać ostatni formularz kontaktu i liczbę zgłoszeń w trakcie tej sesji. Gdy liczba jest powyżej 3, a ostatni czas jest niższy niż 5 minut temu, opublikuj ostrzeżenie i zaktualizuj ostatni raz, aby zapobiec spamom. – Khez

+1

@ Khez, który działa tylko wtedy, gdy klient obsługuje pliki cookie. Jeśli nie, to dla każdej prośby zostanie utworzona nowa sesja. Nie sądzę, że jest to dowód spamera. –

+0

@James prawda, dlatego tylko skomentowałem i nie odpowiedziałem. Próbował tylko popchnąć go we właściwym kierunku. – Khez

Odpowiedz

10

Możesz spróbować zatrzymać to w liczba różnych sposobów:

  • CAPTCHA (już powiedziałeś, że ci się nie podoba, ale ja t jest możliwie najprostszym rozwiązaniem)
  • Odpowiadając jakieś wątpliwości, że jest to łatwe dla osoby, aby odpowiedzieć, ale nie skrypt
  • Making, czy użytkownik jest zalogowany, zanim będą mogły złożyć (zakładając, muszą być zarejestrowane)
  • Oceń ograniczaj formularz tak, aby każdy adres IP mógł być przesyłany tylko raz na N okres czasu
+0

Preferuję połączenie sesji i adresu IP. Ale +1 za oferowanie wielu rozwiązań. – Khez

0

captcha jest bardzo częstym sposobem zapobiegania takim (i dla bardzo dobrego powodu, warto pomyśleć o tym)

jeśli nie można ustawić ciasteczko i sprawdzić, czy jego zbioru, jeżeli tak, to nie pozwolić wysłanie wiadomości e-mail lub zsynchronizowanie adresu IP w pliku lub bazie danych i sprawdzenie, kiedy serwer wysłał ostatnią wiadomość, a jeśli różnica jest wystarczająco mała, nie zezwalaj na wysłanie wiadomości

+0

-1 Powiedział tylko, że wie, że potrafi zaimplementować captcha, ale go nie chce. To było lepiej dostosowane do komentarza. – Khez

1

Aby uniknąć captcha, możesz filtrować adresy IP, na przykład zezwalaj na maksymalnie 10 wiadomości dziennie z tego samego adresu IP.

Za każdym razem, gdy ktoś wyśle ​​wiadomość, zapisuje IP i zwiększa licznik w bazie danych.

0

Jedną z najłatwiejszych rzeczy jest sprawdzenie, czy przesłanie formularza (lub renderowanie) wymaga wykonania javascript. Jest to trochę antyspołeczne dla każdego, kto ma zainstalowany NoScript, ale większość zautomatyzowanych skryptów nie będzie w stanie go obsłużyć.

+0

Rodzaj fałszywej odpowiedzi. Zautomatyzowane skrypty wysyłają żądania POST bezpośrednio do strony. JS nie zrobi nic, aby pomóc w jego bombardowaniu. – Khez

+0

Jeśli jedynym sposobem uzyskania prawidłowego adresu URL POST jest wykonanie niektórych JS, to działa. – regularfry

+0

Sugerujesz, że URL każdego wpisu zmienia się wraz z każdym odświeżeniem, co jest okropnie brzydkie. Dodajesz obciążenie do rozwiązania, które legalni użytkownicy mogą nawet nie być w stanie użytkownika. – Khez

4

Można użyć Akismet, która nie używa sprawdzania poprawności.

+1

+1 akismet jest zrobiony z czystej miłości –

+0

Bardzo ładne rozwiązanie tego problemu. – daganh

Powiązane problemy