Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Spamo-przyjazny formularz?
Forum PHP.pl > Forum > PHP
dukat
Witam, zacząłem otrzymywać spam na adres mail kontaktowy mojej strony, który nigdy nie był widoczny w sieci (na żadnym forum, bezpośrednio w źródle strony itd.). Adres ten jest jedynie w źródle php formularza kontaktowego. Formularz jest zabezpieczony SBLAMem.

Poniżej fragment strony kontakt.php:

  1. <?php
  2. // sprawdzamy, czy zmienna $submit jest pusta
  3. if (empty($_POST['submit'])) {
  4.    // wyświetlamy formularz
  5.    echo "<form onsubmit=\"usun_pl(this)\" action=\"\" method=\"post\">
  6. <table border=\"0\" align=\"center\">
  7. <tr>
  8. <td class=\"standardtr\">Treść wiadomości:</td>
  9. <td><textarea cols=\"50\" rows=\"5\" class=\"komentarz\" name=\"tresc\"></textarea></td>
  10. </tr>
  11. <tr>
  12. <td class=\"standardtr\">Przedstaw się:</td>
  13. <td><input class=\"podpis\" type=\"text\" name=\"imie\" /></td>
  14. </tr>
  15. <td class=\"standardtr\">Adres e-mail:</td>
  16. <td><input class=\"podpis\" type=\"text\" name=\"email\" /></td>
  17. </tr>
  18. <tr>
  19. <td> </td>
  20. <td><input class=\"button_w\" type=\"submit\" name=\"submit\" value=\" \" /><br /><br />
  21. </td>
  22. </tr>
  23. </table></form>
  24. <script src=\"sblam.js.php\" type=\"text/javascript\"></script>";
  25. }
  26. // sprawdzamy, czy zmienne przesłane z formularza nie są puste
  27. elseif (!empty($_POST['tresc']) && !empty($_POST['imie']) && !empty($_POST['email'])){
  28. include_once "sblamtest.php";
  29. $rezultat = sblamtestpost(NULL, "1234123123qeqdaqadq");
  30.  
  31. if ($rezultat > 0) {
  32.    echo '<div class="error" align="center">To jest spam!<br /><br /><a class="szary" href="java script:history.go(-1)">Spróbuj ponownie.</a>
  33.    <p><a href="'.sblamreporturl().'">Zgłoś błąd filtru</a></p></div>';
  34. }
  35. else{
  36.    // jeżeli powyższy warunek jest spełniony tworzona jest wiadomość
  37.    // zmienna $message zawiera treść wiadomości
  38.    $message = "Tresc wiadomosci:\n$_POST[tresc]\nWyslal: $_POST[imie]\ne-mail: $_POST[email]";
  39.    
  40.        // zmienna $header zawiera przede wszystkim adres zwrotny
  41.    $header = "From: $_POST[imie] <$_POST[email]>";
  42.    // funkcja mail() za pomocą której wiadomość zostanie wysłana
  43.    @mail("xyz@xyz.pl","Wiadomosc ze strony WWW","$message","$header")
  44.    or die('Nie udało się wysłać wiadomości');
  45.    // wyświetlenie komunikatu w przypadku powodzenia
  46.    echo "<div class=\"ok\" align=\"center\">Wiadomość została wysłana poprawnie!</div>";
  47.    }
  48. }
  49. // lub w przypadku nie wypełnienia formularza do końca
  50. else {
  51. echo "<div class=\"error\" align=\"center\">Wypełnij wszystkie pola formularza!<br /><br /><a  class=\"szary\" href=\"java script:history.go(-1)\">Spróbuj ponownie.</a></div>";
  52. }
  53. include('boxes.php');
  54. include('footer.php');
  55. ?>


Najbardziej zaniepokoił mnie fakt, że spam jest jakby wysyłany ode mnie do mnie (adres w OD to xyz@xyz.pl) Mam nadzieję że domena nie zostanie dodana do jakichś czarnych list i ten "spam ode mnie" przychodzi tylko do mnie.

Otrzymywany spam w ogóle nie wygląda na wysłany z formularza, nie trzyma schematu.

Moje główne pytanie: Jak to możliwe, że ktoś znalazł ten mail. Strona dopiero startuje, mała popularność, a wysyłanie wiadomości tylko przez ten form. I co zrobić aby spamowanie nie było możliwe? Myślałem, że sblam zabezpieczy formularz...
erix
Cytat
$rezultat = sblamtestpost(NULL, "yZRg6gUe68FTzwYIRX");


:
http://sblam.com/instalacja/php.html#nazwy
dukat
Dzięki, zmieniłem, zobaczymy czy teraz nie będę dostawał co godzinę linku do chińskiej apteki z viagrą smile.gif



Z drugiej strony nie wiem czy to z powodu złej konfiguracji SBLAM ten spam. Temat wiadomości w moim formularzu jest ustawiony na stałe (Wiadomośc ze strony www), a w spamie dostaję w temacie Dear xyz@xyz.pl 70% 0FF on Pfizer ! itp. Podejrzewam, że wiadomości muszą być wysyłane inaczej niż przez form. Ale odczytanie maila z pliku php nie powinno być możliwe... No chyba że jakieś hacki.
athei
Nie wiem na jakiej zasadzie działa sblam, ale poczytaj o email injection http://www.damonkohler.com/2008/12/email-injection.html, może przez to masz inny temat wiadomości.
erix
Przez form na pewno.
dukat
To, w takim razie, dlaczego sblam nie zarejestrował tych wpisów? Poprzednie były, nawet te przed zmianą null'a na tablicę z nazwami pól
Cytat
$rezultat = sblamtestpost(NULL, "123zxc123ZXC");
erix
Cytat
Poprzednie były

To się one zgadzają w ogóle? Nie pamiętam dokładnie, ale sprawdź pola.

Jeśli dużo puszcza, to ręcznie naucz Sblam!, co jest, a co nie jest spamem.
dukat
Zastosowałem klasę PHPMailer (wysyłanie przez SMTP) + Sblam. Na razie spam nie przychodzi.
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.