Два года назад мной был написан несложный PHP-скрипт для формы обратной связи. Письма приходили на почту mail.ru. Как выяснил позднее, в скрипте была ошибка. В «From» я вставлял емэйл-адрес клиента (по сути, подделывал отправителя), однако письма приходили, и ладно.
Исходный код:
А не так давно заметил, что заявки перестали приходить… Проверил форму — не работает. Вызвало недоумение, ибо никто ничего не трогал, и два года всё работало нормально. По ходу экспериментов выяснилось, что если использовать такой код:
то можно совершенно спокойно подделывать любого отправителя (в данном случае Сбербанк).
![image](https://habrastorage.org/r/w780q1/getpro/geektimes/post_images/88c/5de/423/88c5de42323653860623298cef3d7a7b.jpg)
![image](https://habrastorage.org/r/w780q1/getpro/geektimes/post_images/8b3/5d7/2e7/8b35d72e72b7b63bbf62fe2382426f4b.jpg)
Письма приходят во входящие. Как спам определяются не с первого раза. В интерфейсе Mail.ru пишется «Мы не можем проверить подлинность отправителя», однако если вы собираете почту с помощью программы (например, Outlook), то там никакой надписи, естественно, нет.
Ключевое место — дополнительный символ ">". Без этого символа письма с подделанным отправителем, как и положено, НЕ приходят. Очевидно, у почты Mail.ru ошибка в обработке заголовков «headers».
Проверял этот баг на Яндексе. У Яндекса такой проблемы нет (письма с подделанным отправителем не пропускает даже в папку «спам»).
P.S. Представитель Mail.ru сказал «мы не считаем данную ситуацияю ошибкой» (цитата точная), поэтому выкладываю эту информацию с чистой совестью.
Исходный код:
$email = $_POST['email'];
$headers .= "From: " . $email . "\r\n";
А не так давно заметил, что заявки перестали приходить… Проверил форму — не работает. Вызвало недоумение, ибо никто ничего не трогал, и два года всё работало нормально. По ходу экспериментов выяснилось, что если использовать такой код:
$email = "Сбербанк <help@sberbank.ru";
$headers .= "From: " . $email . ">>\r\n";
то можно совершенно спокойно подделывать любого отправителя (в данном случае Сбербанк).
![image](https://habrastorage.org/getpro/geektimes/post_images/88c/5de/423/88c5de42323653860623298cef3d7a7b.jpg)
![image](https://habrastorage.org/getpro/geektimes/post_images/8b3/5d7/2e7/8b35d72e72b7b63bbf62fe2382426f4b.jpg)
Письма приходят во входящие. Как спам определяются не с первого раза. В интерфейсе Mail.ru пишется «Мы не можем проверить подлинность отправителя», однако если вы собираете почту с помощью программы (например, Outlook), то там никакой надписи, естественно, нет.
Ключевое место — дополнительный символ ">". Без этого символа письма с подделанным отправителем, как и положено, НЕ приходят. Очевидно, у почты Mail.ru ошибка в обработке заголовков «headers».
Проверял этот баг на Яндексе. У Яндекса такой проблемы нет (письма с подделанным отправителем не пропускает даже в папку «спам»).
P.S. Представитель Mail.ru сказал «мы не считаем данную ситуацияю ошибкой» (цитата точная), поэтому выкладываю эту информацию с чистой совестью.