Einzelnen Beitrag anzeigen
  #1  
Alt 31.12.2005, 18:07:17
bweichel bweichel ist offline
Junior Member
 
Registriert seit: Jun 2003
Beiträge: 196
Spam durch Mailversand über Formular

Hallo,

es werden Spamnachrichten über ein Mailformular auf meiner Internetseite versendet. Ich bin auch schon bei mehreren Blacklists gelistet.

Der Fehler lag offensichtlich in der "Absenderzeile". Man konnte dort ohne weiteres "To:" und "Bcc:" Blöcke einfügen.

Ich habe mir nun eine Funktion geschrieben die:

[1] den Referer überprüft
[2] den Absender auf Zeilenumbrüche überprüft

Ich glaube dass das alles war, um dem Spam entgegen zu wirken. Aber ich möchte sicherheitshalber nochmal andere Profis über mein Script schauen lassen um auch wirklich keine Sicherheitslücke mehr zu hinterlassen.

Also hier mein Script:
PHP-Code:
<?php
function mailsend($empfaenger,$betreff,$nachricht,$absender) {
    
$send 0;

    
$hosts = array();
    
// hier den referer eintragen
    
$host[] = "http://192.168.0.2";
    
$host[] = "www.DeineDomainAdresse.de";

    
$referer $_SERVER['HTTP_REFERER'];
    
$remote_addr $_SERVER['REMOTE_ADDR'];

    if(
$referer != "") {
        if(!(
ereg("\n"$absender) OR ereg("\r"$absender))) {
            foreach(
$host as $key => $val) {
                
#print $key . " " . $val . " " . $referer . "<br>";
        
                
if(ereg("$val"$referer)) {
                    
$send 1;
                    
#print $referer . " in $val gefunden! <br>";
                    
break;
                }
                else {
                    
#print $referer . " in $val nicht gefunden! <br>";
                
}
            }
        }

        if(
$send == 1) {
            
$headers 'From:' $absender "\n";
            
$headers.= 'Reply-To:' $absender "\n";
            
$headers.= 'X-Mailer: PHP/' phpversion() . "\n";
            
$headers.= 'X-Sender-IP: ' $remote_addr "\n";
            
$headers.= "Content-type: text/html\n";

            
mail($empfaenger,$betreff,$nachricht,$headers);
            
            return 
$send;
        }
        else {
            
$headers "From: DeinName <Deine@eMailAdresse.tld>\n";
            
$headers.= "Reply-To: Deine@eMailAdresse.tld\n";
            
$headers.= 'X-Mailer: PHP/' phpversion() . "\n";
            
$headers.= 'X-Sender-IP: ' $remote_addr "\n";
            
$headers.= "Content-type: text/html\n";
        
            
$nachricht.= "<br><br>Host: $referer<br>IP: $remote_addr<br><br>$absender";

            
mail("Deine@eMailAdresse.tld","SERVER: Spamverdacht bei Mailversand",$nachricht,$headers);
            
            return 
$send;
        }
    }
    else {
        return 
$send;
    }

    
#print "SEND: " . $send;
}
?>
Mit Zitat antworten