спам через одну из форм на сайте - как защититься?

ka

Новичок
спам через одну из форм на сайте - как защититься?

Проблема такая - хостер заблокировал отсылку почты из скриптов из-за, якобы, рассылки спама.
Я не спамил, адрес, с которого вроде как спамили вообще не существует, но указывает на мой домен. Похоже, сделали это через скрипт, используя какую-то уязвимость.
Вопрос - как это происходит и как можно защититься?
В своих скриптах для обработки полученных данных использую: trim, substr, htmlspecialchars.
Что еще можно сделать для повышения безопасности?
Спасибо.
 

Alexandre

PHPПенсионер
проблема спама - это глобальная проблема. Перед новым годом у меня был конфликт с провайдером из-за расслылки (тоже отключили на пару дней из-за чего компания понесла колосальные убытки - штрафные санкции от рекламодателей ).

Для того, чтоб почтовики тебя не считали спамом, твой маил-сервер должен быть зарегистрирован, и отправлять письма с того же айпишника, за которым закреплен почтовый маил-сервер.
 

ka

Новичок
почитал я про mail injection, получается, что причина произошедшего в том, что при вводе мыла в форме к нему можно дописать еще и другие и таким образом рассылать спам?
лечение - проверка поля с мылом на наличие только одного адреса, так?
не совсем понял почему при проверки ищут знак перевода строки, дополнительные адреса можно дописать только после него?
 

vasa_c

Новичок
ka, а какое поле у вас в форме? Если обратный адрес, то без разницы, сколько там адресов.
После перевода строки можно написать другие заговолки, например для копии письма:
cc: много_всяких_адресов.
 

ka

Новичок
вот моя форма
PHP:
<table border=0>
     <form action="send.php" method="post">
     <input type="hidden" name="action" value="post">
     <tr><td>&#200;&#236;&#255;:<font color=red><sup>*</sup><font></td><td align=right><input type="text" name="name" maxlength="32"></td></tr>
     <tr><tr><td>E-Mail:</td><td align=right><input type="text" name="email" maxlength="32"></td></tr>
     <tr><td colspan=2>&#209;&#238;&#238;&#225;&#249;&#229;&#237;&#232;&#229;:<font color=red><sup>*</sup></font><br><textarea cols="50" rows="5" name="msg"></textarea></td></tr>
     <tr><td colspan=2><input type="submit" value="&#196;&#238;&#225;&#224;&#226;&#232;&#242;&#252;"></td></tr>
     </form>
     </table>
 

vasa_c

Новичок
ka, поле email для чего используется? Это адрес на который будет отправлено письмо или просто обратный адрес заполнителя?
 

ka

Новичок
так, кажется начинаю понимать:
суть атаки - дописывание экстра-заголовков к письму, в которых указываются дополнительные адресаты.
Дописать это можно ТОЛЬКО (или я недопонял) в поле "отправитель" добавляя адреса к которым пойдут копии письма или дополнительных получателей (добавляя "\nTo:[email protected]").
Защититься от этого можно путем проверки поля "отправитель" на наличие знаков перевода строки и возврата каретки.
Я все правильно понял?
А если в форме нет поля для указания мыла отправителя, такого произойти не может?
Если при дописывании заголовков написать не "\n", а "%OA", пройдет ли такое письмо?
В одном из примеров видел, что перед проверкой на знаки перевода строки поле обрабатываетс с помощью "urldecode" - не совсем понял для чего это, что бы преобразовать "\n", в "%OA",?

-~{}~ 19.04.06 16:47:

просто обратный адрес отправителя
 

Фанат

oncle terrible
Команда форума
мыло отправителя тут вообще никаким боком.
если при дописывании заголовков написать хоть "\n", хоть "%OA" - ничего не будет
чтобы понять, для чего нужна urldecode, надо читать документацию
впрочем, в данном случае она не нужна
 

ka

Новичок
Автор оригинала: Фанат
мыло отправителя тут вообще никаким боком.
в смысле? я имел ввиду поле формы, куда пользователь пишет свое мыло, ведь заголовок можно дописать только к нему, или нет?
если при дописывании заголовков написать хоть "\n", хоть "%OA" - ничего не будет
что значит ничего не будет? а как их тогда дописывают?
чтобы понять, для чего нужна urldecode, надо читать документацию
понял
впрочем, в данном случае она не нужна
 

Фанат

oncle terrible
Команда форума
блин, или научись цитировать или не делай этого вовсе.

с чего ты взял, что спамили через эту форму?
 

ka

Новичок
научусь

может и не через эту, есть пара других, но отличаются только кол-вом полей - телефон, город и т.д.

Фанат, объясни, плз, правильно ли я понял:

дописать заголовки можно только через поле куда пользователь пишет мыло

делается это так:
[email protected]%0ACc:[email protected]%0ABcc:[email protected]

или я вообще ниче не догнал?
 

vasa_c

Новичок
Дописать заголовки можно через поле, которое потом вставляется в заголовки письма.
Если поле "обратный адрес" вставляется в заголовок "From" письма, то можно дописать.
Если оно вставляется только в тело письма, типа, "Обратный адрес отправителя — такой-то", то здесь уже ничего не сделать.
 

ka

Новичок
спасибо, vasa c, я так и понял, только выразился неправильно
 

Фанат

oncle terrible
Команда форума
ты не понимаешь синтаксиса пхп и НТТР
и путаешь их, ко всему прочему, с данными, введёнными в форму.
 
Сверху