Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> spam wysyłany poprzez formularz kontaktowy, zła deklaracja i inicjalizacja zmiennej w skrypcie
mpps
post
Post #1





Grupa: Zarejestrowani
Postów: 242
Pomógł: 0
Dołączył: 14.03.2003
Skąd: Szczecin

Ostrzeżenie: (0%)
-----


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. ?>


--------------------
www.mpps.pl
park maszynowy: apache 2.2.22 | php 5.4.0 | MySQL 5.0.10 | phpMyAdmin 3.5.0 | notepad ++ | pilsner urquell
Go to the top of the page
+Quote Post
nospor
post
Post #2





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




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


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
mpps
post
Post #3





Grupa: Zarejestrowani
Postów: 242
Pomógł: 0
Dołączył: 14.03.2003
Skąd: Szczecin

Ostrzeżenie: (0%)
-----


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?


--------------------
www.mpps.pl
park maszynowy: apache 2.2.22 | php 5.4.0 | MySQL 5.0.10 | phpMyAdmin 3.5.0 | notepad ++ | pilsner urquell
Go to the top of the page
+Quote Post
fiszol
post
Post #4





Grupa: Zarejestrowani
Postów: 452
Pomógł: 16
Dołączył: 25.05.2004
Skąd: Gorzów Wlkp.

Ostrzeżenie: (0%)
-----


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


--------------------
\o/
Go to the top of the page
+Quote Post
mpps
post
Post #5





Grupa: Zarejestrowani
Postów: 242
Pomógł: 0
Dołączył: 14.03.2003
Skąd: Szczecin

Ostrzeżenie: (0%)
-----


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?


--------------------
www.mpps.pl
park maszynowy: apache 2.2.22 | php 5.4.0 | MySQL 5.0.10 | phpMyAdmin 3.5.0 | notepad ++ | pilsner urquell
Go to the top of the page
+Quote Post
cadavre
post
Post #6





Grupa: Zarejestrowani
Postów: 472
Pomógł: 7
Dołączył: 7.12.2005
Skąd: Gliwice

Ostrzeżenie: (0%)
-----


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"...

Ten post edytował cadavre 14.12.2006, 21:54:14


--------------------
Silesian PHP User Group - www.spug.pl
Symfony2, OAuth2, budowanie API - masz pytania? Pisz!
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 21.08.2025 - 15:07