|
|
|
| На сайте стоит простая форма отправки сообщений на e-mail. Удаленный пользователь пытается использовать ее (либо напрямую обработчик) в качестве инструмента для осуществления спам-рассылки через сервер хостера. И хотя из-за ограничений хостера она не осуществляется, но попытки идут, нагружая, по всей видимости, сервер хостера.
Вопрос. Если кто сталкивался, то какие методы защиты обработчика будут наиболее действенными? | |
|
|
|
|
|
|
|
для: Anchi
(24.11.2005 в 18:59)
| | Защиты от чего? И кого? | |
|
|
|
|
|
|
|
для: Shorr Kan
(24.11.2005 в 19:11)
| | Защита обработчика формы от возможности осуществления через него массовых спам-рассылок. А от кого не столь важно, здесь может быть любой спаммер. | |
|
|
|
|
|
|
|
для: Anchi
(24.11.2005 в 19:26)
| | а форму можно увидеть? ну и до кучи скрипт-обработчик. так быстрее разберемся | |
|
|
|
|
|
|
|
для: goddamn
(24.11.2005 в 19:30)
| | Форма:
<FORM action=mail.php method=post>
* Ф.И.О.: <INPUT style="width:100px" name=fio maxlength=50><br>
* Город: <INPUT style="width:100px" name=city maxlength=30><br>
* E-mail: <INPUT style="width:100px" name=email maxlength=30><br>
* Ваши комментарии:<br>
<TEXTAREA name=comment rows=6 style="width:273px"></TEXTAREA><br>
<INPUT type="submit" value="Отправить" name="ok">
<INPUT type=reset value="Очистить" name=B2>
</FORM>
Обработчик:
<?
$mailto="e-mail";
if (empty($ok))
{
?>
<?
}
else
{
$subject="От $fio";
$body="Ф.И.О.:\n$fio\n\nГород:\n$city\n\n
Сообщение:\n$comment\n\n\nIP-адрес:$REMOTE_ADDR";
$sucess = mail($mailto, $subject, $body, "From: $email\nX-Mailer: PHP/" . phpversion());
if ($sucess)
{
echo "<font color=Darkgreen>Спасибо. Сообщение отправлено!</font><br><br>";
echo "<a href='javascript: self.close()'>Закрыть окно</a>";
}
}
?>
Обязательность заполнения полей проверяется JS, но код не привожу, так как погоды это не делает. | |
|
|
|
|
|
|
|
для: Anchi
(24.11.2005 в 19:56)
| | Самый стандартный вариант защиты - формирование случайного порядка букв и цифр, и вывод их - или через графические функции, или же - в случайном порядке. То есть, текстовым вариантом, но окружение должно быть разнообразным - теги <b> , <i>, и прочее, прочее, прочее. Например, можете когда-то тире выводить и писать: "Введите коде С тире", а в другие моменты: "введите код БЕЗ тире".
Разумеется, сформированный код - человек должен ввести в input-поле. | |
|
|
|
|
|
|
|
для: Shorr Kan
(24.11.2005 в 20:20)
| | Значит все-таки генерация... :) Столько чести для такой формы... :) Спасибо Shorr Kan. | |
|
|
|
|
|
|
|
для: Anchi
(24.11.2005 в 20:46)
| | Можно поместить в скрытое поле уникальный идентификатор сессии $SID - если идентификатор переданный через форму и текущий не совпадают - не оправлять письмо. Правда если робот поддерживает cookie - это можно обойти. Хотя процентов 70% злоумышлеников этим можно отсечь. | |
|
|
|
|
|
|
|
для: cheops
(25.11.2005 в 00:16)
| | cheops. В описанном мною случае, спаммер пытается через обработчик осуществить рассылку своего письма на много-много адресов эл. почты. Попытки сразу фиксируются почтовым логом хостера, отсюда, вполне вероятно, могут быть санкции и т.д. Т.е. по идее пресекать нужно возможность отправки письма на множество e-mail адресов. Вот такое направление. | |
|
|
|
|
|
|
|
для: Anchi
(25.11.2005 в 03:30)
| | Он для это изменяет почтоый заголовок - использует Bcc (вроде нет такой возможности) или просто осуществляет слишком частые обращения к обработчику, отправляя по одному письму за раз? Если последний случай, можно помещать IP-адрес и время использования сервиса в таблицу MySQL или файл, а при последующей отправке проверять имеется ли такой адрес в таблице, если имеется ничего не отправлять. При загрузке HTML-формы следует осуществлять уничтожение записей, которые старше 10 минут. 10 минутной задержки между отправкой сообщений за глаза хватит, чтобы заставить спамера искать другую жертву. А пользователей можно честно предупредить, что следующее письмо можно отправить только через 10 минут. Причём если у спамера очень большая база - ему и несколько секунд будут критичны, кроме того он не будет знать какие письма отправились, а какие нет.
PS Причём лучше поторопиться с решением этой проблемы - за спам у хостера могут быть большие неприятности - он может либо открыто, либо (что хуше) в тихоря ввести какое-нибудь ограничение для вас при работе с почтой. | |
|
|
|
|
|
|
|
для: cheops
(25.11.2005 в 13:45)
| | На мой адрес приходят уведомления, т.е. "в темную" обработчик не используется, иначе я узнал бы о таких попытках только от хостеров. Обращения к обработчику не слишком частые, но практически каждодневные (в основном ночью с интервалом 1,5-2 часа). IP-адрес все время разный. Скорее всего используется удаленная форма (не с сайта) просто с моим action, так как мои логи не показали присутствия этих IP-адресов на сайте в моменты отправок.
Получается, что блокировка по IP теряет актуальность, а вот время использования...но тоже вопрос, мы ведь не знаем размер базы и скорость... Тут шансов ему давать совсем нельзя, было бы в самую точку жесткое ограничение на кол-во адресов отправки, чтобы этот момент нельзя было обойти..
С P.S. полностью согласен. По этой причине форму пока убрал (вместе с обработчиком), оставив лишь мыло. | |
|
|
|
|
|
|
|
для: Anchi
(25.11.2005 в 17:16)
| | Прошейте форму сессией - т.е. поместите в скрытое поле $SID и проверяйте при отправке почты равен ли SID в форме текущему идентификатору - если злоумышленик не знает протокол HTTP и испытывает трудности с программированием - обойти эту защиту ему будет трудно. | |
|
|
|