Andreas Korthaus: Mißbrauch eines PHP-Formmailers als SpamRelay

Beitrag lesen

Hi!

Ich kanns grade nicht ausprobieren, aber:
auch der subject-Parameter der PHP-Mail-Funktion wird ja letzten Endes in den header der Mail geschrieben.

Ja, aber PHP prüft jedes Zeichen des Subject ob es ein Sonderzeichen ist:

for(i = 0; subject[i]; i++) {
   if (iscntrl((unsigned char) subject_r[i])) {
    SKIP_LONG_HEADER_SEP(subject_r, i);
    subject_r[i] = ' ';
   }
  }

Prüft PHP wirklich ab, ob im subject kein Zeilenumbruch vorkommt?

ja. Wobei ich in den Kommentaren gelesen habe, dass es früher mal anders war (anno 2002).

Im Manual heißt es:
Note:  Make sure you do not have any newline characters in the to or subject, or the mail may not be sent properly.

Eigentlich müsste das veraltet sein.

Keine klare Aussage, was bei einem Zeilenumbruch (hinter dem dann To:bla@example.org steht) im Subject passiert...

das wird  mit ins Subject geschrieben, und der Zeilenumbruch durch ein Leerzeichen ersetzt.

Aber bei mail() gibt es einen 4. Parameter, der dafür gedacht ist eigene Header hinzuzufügen, hier muss man sehr vorsichtig sein wenn man da Variablen einfügt, denn man hat sonst genau dasselbe Problem wie bei PERL:

<?php
mail("nobody@example.com", "Betreff", $_POST['message'], "From: {$_POST['from']}");
?>

Hiermit hätten wir dasselbe Scheunentor in PHP. Wenn ich hier sowas wie "\r\nTo:opfer1@example.com,opfer2@example.com..." angebe, dann habe ich ein wunderbares System um Spam zu versenden.

Viele Grüße
Andreas

--
SELFHTML Linkverzeichnis: http://aktuell.de.selfhtml.org/links/