Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Для профи > Защита от спама через пост форму сайта


Автор: Deg 4.10.2006, 09:59
Приветствую,

Граждане! Откликнитесь, кто сталкивался с такими граблями.
есть файл send.php который обрабатывает POST из формы
Код

        $mail = new PHPMailer();//Просто класс работы с почтой
        $mail->SetLanguage("ru", "./language/");                                     
        $mail->From = strip_tags($_POST['EMAIL']);
        $mail->FromName = strip_tags($_POST['NAME']);                                              
        $mail->IsHTML(true);                               
        $mail->Subject = 'Сообщение от посетителя сайта http://'.$_SERVER['SERVER_NAME'];
        $mail->Body    = $_POST['COMMENT'];
        $mail->AltBody = $_POST['COMMENT'];
        $admins = $d->queryallrecords("SELECT `email`,`fio` FROM `users` WHERE `ut`='Администратор'");//возвращает массив
        if (!empty($admins)) foreach($admins as $admin) {
            @$mail->AddAddress($admin['email'], $admin['fio']);   
            if (!$mail->Send()) echo "<script>alert('Бочина с адресом ".$admin['email']."');</script>";
        }
        echo "<script>document.location = '".$g['site_root']."pages/all/confirmed';</script>";


Форма
Код

<table width="100%" border="0" cellpadding="0" cellspacing="0">
<tr>
    <td>
        <FORM name="blog" id="blog" method="POST" action="/lib/plug-ins/navbar/lib/send.php">
        <table width="100%" border="0" cellpadding="0" cellspacing="0">
        <tr>
            <td>Имя<br><input type="text" name="NAME" style="WIDTH: 100%"></td>
        </tr>

        
        <tr>
            <td>Адрес электронной почты<br><input type="text" name="EMAIL" style="WIDTH: 100%"></td>
        </tr>
        
        <tr>
            <td>Сообщение<br><textarea rows="5" name="COMMENT" style="WIDTH: 100%"></textarea></td>
        </tr>
        <tr>

            <td><input type="button" value="Send" onClick="if ((blog.NAME.value == '') || (blog.EMAIL.value == '') || (blog.COMMENT.value == '')) alert('Fill in the data fields first'); else blog.submit();"><input type="reset"></td>
        </tr>
        </table>
        </FORM>
    </td>
</tr>
</table>


Помогите, ребята, как быть?! Спамят, гады! Как защитить лучше этот send.php???

Автор: Vaulter 4.10.2006, 11:21
Deg, самое банальное
не обзывай поля EMAIL, COMMENT и кнопку Send.
обзови хитрее. (fieldofdamnedelectronicm, thiscleverandclearmestome and soon)

сделай проверку по картинке (CAPTCHA)
можно проще по куки.

Автор: Garret 4.10.2006, 15:29
Самый просто и довольно надежный вариант, передавать в пост запрос еще один параметр, спрятаное поле содержащее какое то хитрое значение(как оно генерируется знаешь только ты). А потом проверять его.

Автор: MuToGeN 4.10.2006, 15:52
Цитата(Garret @  4.10.2006,  15:29 Найти цитируемый пост)
Самый просто и довольно надежный вариант
Этот "довольно надежный" вариант можно легко обойти.
Обратный тест Тьюринга (CAPTCHA), кстати, тоже обходится (даже без нейросетей итд итп, все гораздо проще).
Как вариант, могу предложить обязательную регистрацию / авторизацию.

Автор: Garret 4.10.2006, 16:07
Цитата(MuToGeN @  4.10.2006,  15:52 Найти цитируемый пост)
Этот "довольно надежный" вариант можно легко обойти.
Не зная способа генерации доп значения? Раскажи как, мне интересно.

Каптча обходится но далеко не каждая.

Автор: Deg 9.10.2006, 08:36
Спосибки, ребята, генерирую картинку, так как с регистрацией вариант отпадает...

Автор: MuToGeN 12.10.2006, 19:22
Цитата(Garret @  4.10.2006,  16:07 Найти цитируемый пост)
Каптча обходится но далеко не каждая. 

Допустим, у тебя есть сайт с высокой посещаемостью и есть чужой сайт, на котором тебе надо обойти обратный тест Тьюринга с картинкой.
Сливаешь скриптом страницу, запоминаешь все, по чему ответ к картинке может проверяться (ИД сессии, например), показываешь на своем сайте пользователю. Результат: машина заменяется человеком.

Автор: Alone 17.10.2006, 11:26
таки да! smile
такой прием применяют спамеры для генерации новых ящиков на серверах с проверкой по каптчу.
создается порносайт, куда перебрасывается каптча smile и юзер, регистрящийся на псевдопорносайте - подтверждает каптча и регистрится новый ящик спамеру smile

Автор: Mystery_of_being 9.11.2006, 03:08
ДА чего вы ) Картинка нормальный руль. Ее обходят восновном тогда, когда у спамеров есть цель обойти именно вашу картинку. А когда цели такой нет то можно жить спокойно... ну ладно.. обойдет ее  пару роботов.. но это же не завальный спам... вот у меня например подтверждение регистрации по Имейл обходили на PHP BB  ....   smile   Буду ставить свою картинку  ( Просто делаю 1 регистрацию на весь сайт) и еще я замети, что вот мои формы не спамят совсем... только вот таких движков популярных.... интересно почему? 




PS. Если надо.... то обойдут все что угодно... ведь некоторые челы даже обошли вокруг земли )))) 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)