Przykład jest prosty. Weźmy skrypt z tego kursu (btw. miło, że ktoś go czytuje

) tuż nad wspomnianym komunikatem i załóżmy, że jedno z pól można wpisać w formularzu. Wtedy kod wygląda tak:
<?php
$naglowki = "From: moj@mail.plr\nReply-To: '.$_POST['reply_to'].'r\nContent-type: text/plain; charset=iso-8859-2";
if(mail('jan_testowy@serwer.pl', 'Witaj', 'Oto test funkcji mail', $naglowki)) {
echo 'Wiadomość została wysłana'; }
?>
I teraz wyobraź sobie, że za pomocą durnego programu
telnet przygotowuję takie żądanie HTTP, że pole "reply_to" ma następującą wartość:
Kod
foo@bar
From: Miecio <mieco.jest.gupi@costam.pl>
Ostatecznie zmienna
$naglowki będzie zawierać:
Kod
From: moj@mail.pl
Reply-To: foo@bar
From: Miecio <mieco.jest.gupi@costam.pl>
Content-type: text/plain; charset=iso-8859-2
Jak widzisz, do listy nagłówków udało mi się dopisać nagłówek, którego kod PHP w ogóle nie przewiduje, właśnie z powodu tego, że nie dodaliśmy żadnego kodu, który z
$_POST['reply_to] usunąłby znaki nowej linii. Przykładowe zabezpieczenie:
<?php
$naglowki = "From: moj@mail.plr\nReply-To: '.strtr($_POST['reply_to'], "r\n", 'rn').'r\nContent-type: text/plain; charset=iso-8859-2";
?>
Wysyłając identyczne zapytanie do tego samego kodu, dostalibyśmy następującą listę nagłówków:
Kod
From: moj@mail.pl
Reply-To: foo@barrnFrom: Miecio <mieco.jest.gupi@costam.pl>
Content-type: text/plain; charset=iso-8859-2
Tym samym atakujący nie ma już możliwości dodania do maila nagłówka, którego nie chcemy.