Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: spam wysyłany poprzez formularz kontaktowy
Forum PHP.pl > Forum > PHP
mpps
Witam,
mam następujący problem:

Przygotowałem formularz kontaktowy, z którego pobierane są dane do zmiennych w celu przesłania wiadomości:

  1. <?php
  2. $site_email = "jakis@adres.email.net";
  3.  
  4. $header = "From: "adres wysylkowy" <".$site_email.">rn";
  5.  
  6. $header_other = "From: ".$osoba." <".$email.">rn"; //dane do zmiennych pobierane z formularza
  7.  
  8. if($send=="ok"){
  9. mail("$email",
  10. "podziekowania!",
  11. "tekst podziekowania",
  12. "$header");
  13.  
  14. mail("$site_email",
  15. "powiadomienie o kontakcie",
  16. "osoba: $osoba
  17. email: $email",
  18. "$header_other");
  19. }
  20. ?>


Problem polega na tym, iż okazało się, że formularz umożliwia wysyłanie spamu.
Mam informację, że błąd tkwi w złej deklaracji i inicjalizacji zmiennej header_other.
Jakie zmiany powinienem poczynić, aby skrypt stał się bezpieczny?

Formularz jest wysyłany metodą:
  1. <?php
  2. print('<FORM METHOD="POST" ACTION="index.php?id='.$id.'&send=ok" NAME="contact">');
  3. ?>
nospor
no ale formularz kontaktowy zazwyczaj sluzy do wysylania mailo do Ciebie, do Twojej firmy i to ty ustalasz do kogo ma isc mail, a nie uzytkownik. Czyzbys ty email do kogo ma isc ustawial gdzies na stronie?

edit:
a juz widze:
mail("$email",
"podziekowania!",
"tekst podziekowania",
"$header");

wysylasz podziekowania do tego co wysylal, co defacto prowadzi do tego ze mozna tam dowolny emali wsadzic. rozwiązanie: nie wysylaj podziekowan smile.gif
mpps
Cytat(nospor @ 13.12.2006, 17:19:04 ) *
rozwiązanie: nie wysylaj podziekowan smile.gif


@nospor to się nieźle uchachałem biggrin.gif
już to zastosowałem, jednak nie rozwiązuje to problemu.
doszedłem do tego, że pole, w które wpisywany jest adres e-mail powinienem sprawdzać pod kątem prawidłowo wpisywanego adresu tak, aby np. nie można było wysłać do wielu odbiorców podziękowania.

zastanawiam się nad zastosowaniem zabezpieczenia typu captcha (generowanie obrazka) lub dodatkowego potwierdzenia wysłania formularza. Jest to dodatkowa czynność, która może być trochę upierdliwa dla wysyłającego, no ale jak się inaczej pozbyć tego problemu?
fiszol
co lepsze boty przejdą generowane obrazki, dzisiaj jednak widziałem chyba obrazek nie do przejścia, moim zdaniem bardzo dobre rozwiązanie:

Na obrazku generujesz proste działanie matematyczne, np 13+22= a w polu formularza żądasz wyniku tego działania. Nie sądze aby było to jakoś specjalnie upierdliwe, dla dzisiejszego użytkownika internetu przpisywanie obrazków to codzienność, chociażby bramka sms w gadu ;p
mpps
niezły pomysł z tym generatorem działań matematycznych.
pewnie za chwilę i takie zabezpieczenie będzie do przejścia, niestety...

jest jeszcze jeden problem, mianowicie jeśli automat mimo wszystko obejdzie zabezpieczenia, to pozostaje kwestia zwrotów z serwerów, które odrzucą taką wiadomość będącą spamem.
jak ustawić nagłówek Return-Path? A raczej jaki adres powinno się wpisać w nagłowek?
czy utworzyć specjalną skrzynkę, na którą będą kierowane zwroty i maile do odbiorców nieistniejących w domenie, i tą skrzynkę ustawić w nagłówku Return-Path?
Jakie jest powszechnie stosowane rozwiązanie?
cadavre
Podobna rzecz jest tutaj: Temat: klasa iqCaptcha 02

Też miewam spore problemy ze spamem - mam trzy podstawowe filtry: jeden sprawdza czy są linki w wysyłanej wiadomości (może dodawać tylko linki [safelink]url[/safelink]), drugi i trzeci zależne są od usera bądź czegoś "ponad" - są to bowiem ban na IP (mało skuteczne ze względu na zmienność IP, są jednak roboty na stałych IP) oraz filtr słów - ten uaktualniany jest moim autorskim skryptem, który cronem odpalany jest raz na tydzień - wszystkie wiadomości wysyłane z formularzy zapisywane są w bazie danych, następnie z panelu administracyjnego wybieram te, które są spamem; przepuszczam je przez filtr porównujący je między sobą i wybieram pierwszych dwadzieścia zwrotów, które wydają się być najbardziej spamerskie (to wszystko robi automat), zapisuje je do bazy zwrotów, następnie modowie analizują te zwroty i ewentualnie błędne wyrzucają. Skrypt, przez który przepuszczam formularze porównuje wprowadzone dane z bazą zwrotów.

EDIT: Istnieje naturalnie tzw. "biała lista" zwrotów, które są wykluczane z porównań - typu "i", "a", "oraz", "patrz"...
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.