AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

[PHP] Email senden

Ein Thema von Luckie · begonnen am 7. Nov 2005 · letzter Beitrag vom 14. Apr 2006
Antwort Antwort
Seite 3 von 5     123 45      
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#21

Re: [PHP] Email senden

  Alt 7. Nov 2005, 23:04
So gerade wurde von einem netten Forumsteilnehmer mein Script geknackt mit diser HTML Datei:
Code:
<html>
  <form ACTION="http://www.luckie-online.de/php/mail.php" METHOD=POST>
    Ihre E-Mail Adresse:
 
    <textarea NAME="from" COLS=60 ROWS=15>test@tester.de>
To: Tester <xyzabc@foob.ar>
Date: Sat, 22 Oct 2005 16:50:53 +0200 


.
</textarea>

 
    Ihr Name:
 
    <input NAME="yourname" size=35>

 
    Betreff:
 
    <input NAME="subject" size=35>

 
    Ihr Text:
 

    <textarea NAME="text" COLS=60 ROWS=15>
diese mail solltest du gar nicht bekommen, sorry, falls es viele versuchen und du zu gespamt

wirst..., bei mir bleibt es bei diesem einen test! 
versprochen...

Gruß Peter
</textarea>

 
    <input TYPE="submit" VALUE="Senden">
  </form>
</html>
Die Mail ging sowohl an mich, als auch an den anderen Forumsteilnehmer, was ja eigentlich nicht sein sollte.
Den Tipp von Pr0gs habe ich noch nicht eingebaut, hätte der das verhindert? Alös erstes werde ich die Variable $to zu einer Konstanten machen, damit man diese schon mal nicht überschreiben kann.

Puh, jetzt sieht man mal, wie schwer es ist solche Sachen wasserdicht zu bekommen, dabei ist das ja noch recht einfach und übersichtlich.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
ripper8472

Registriert seit: 17. Aug 2003
275 Beiträge
 
#22

Re: [PHP] Email senden

  Alt 7. Nov 2005, 23:07
es nuetzt nichts, die konstant zu machen.

du musst alle eingaben parsen, also die eingegebenen emailadressen des users zerlegen und auf richtigkeit pruefen. wie du siehst, hat er da weitere header eingeschmuggelt.

edit: aeh unfug. $from musst du im code festlegen. sonst kann ja wie gesehen jeder irgendwas reingeben.
Christoph
  Mit Zitat antworten Zitat
Benutzerbild von Pr0g
Pr0g

Registriert seit: 21. Mai 2004
809 Beiträge
 
Delphi 7 Personal
 
#23

Re: [PHP] Email senden

  Alt 7. Nov 2005, 23:10
Mein Vorschläge hätte das Umgehen auch nur verhindert, wenn die register_globals Einstellung auf dem Sever auf "off" gestanden hätte (was sie ja nicht ist, sonst könnte dein Script in jetziger Form nicht funktionieren), da dann kein Zugriff mehr von außen auf die Variablen möglich ist.

Auch unterscheidest du momentan ja nicht zwischen GET und POST Daten, daher hätte man sich das Formular auch fast sparen können und eine Mail nur per Aufruf des Links mit passenden Parametern abschicktn können.
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#24

Re: [PHP] Email senden

  Alt 7. Nov 2005, 23:10
Zitat von ripper8472:
du musst alle eingaben parsen, also die eingegebenen emailadressen des users zerlegen und auf richtigkeit pruefen. wie du siehst, hat er da weitere header eingeschmuggelt.
Uff, das übersteigt etwas mein können. Was muss ich da wie parsen und überprüfen?
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von x000x
x000x

Registriert seit: 21. Jan 2004
Ort: Bei Hamburg
308 Beiträge
 
Delphi XE2 Professional
 
#25

Re: [PHP] Email senden

  Alt 7. Nov 2005, 23:15
ich würde $from gar nicht für den header verwenden, sondern einen vordefinierten absender benutzen...
@luckie: kannst du die gmx adresse bitte aus dem beitrag entfernen?
Peter
-= Gruss Peter =-
-= alias x000x =-
  Mit Zitat antworten Zitat
ripper8472

Registriert seit: 17. Aug 2003
275 Beiträge
 
#26

Re: [PHP] Email senden

  Alt 7. Nov 2005, 23:17
erstmal sorry, dass ich da oben so vorschnell "sicher." gesagt hab. hab deinen code nicht gruendlich genug gelesen.

also. alle daten, die von aussen kommen, sind der potenzielle tod fuer dein script. $from wolltest du dem script per aufruf fuettern, das hat dieser jemand von vor ein paar posts aufgedeckt und einen weg gezeigt, es auszunutzen. das kannst du erstmal fixen, indem du $post im script zuweist.

eingaben von aussen zu pruefen ist schon schwierig. da geht man am besten nicht mit "einschraenken" vor, sondern mit "erlauben". beispiel username in einem forum:
wuerde ich namen verbieten, die die sonderzeichen "!@#$%^&*()" enthalten, dann macht sich einer die muehe, andere sonderzeichen zu finden.
erlaube ich stattdessen nur a-z, A-Z, 0-9 und leerzeichen und verlange mindestens 3-zeichen-lange nicks, dann ist das sicher.
Christoph
  Mit Zitat antworten Zitat
Benutzerbild von Pr0g
Pr0g

Registriert seit: 21. Mai 2004
809 Beiträge
 
Delphi 7 Personal
 
#27

Re: [PHP] Email senden

  Alt 7. Nov 2005, 23:22
Hier hast du nen Artikel zum Thema "Emailadressen validieren". Zumindest den ersten Teil mit der Validierung per RegEx kannst du in dein Script packen um dann zu prüfen, ob der User nur eine Email, oder mehr angegeben hat.
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#28

Re: [PHP] Email senden

  Alt 7. Nov 2005, 23:32
OK, jetzt sieht das alles so aus:
Code:
  define("TO", "mpuff@luckie-online.de");
 
  function validate_email($email)
  {
 
     // Create the syntactical validation regular expression
     $regexp = "^([_a-z0-9-]+)(\.[_a-z0-9-]+)*@([a-z0-9-]+)(\.[a-z0-9-]+)*(\.[a-z]{2,4})$";
 
     // Presume that the email is invalid
     $valid = 0;
 
     // Validate the syntax
     if (eregi($regexp, $email))
     {
        list($username,$domaintld) = split("@",$email);
        // Validate the domain
        if (getmxrr($domaintld,$mxrecords))
           $valid = 1;
     } else {
        $valid = 0;
     }
     return $valid;
  }

  $headers = "MIME-Version: 1.0\r\n".
   "Content-Type: text/plain; charset=iso-8859-1\r\n".
   "From: \"Kontakt luckie-online.de\" <webmaster@luckie-online.de>\r\n".
   "To: ".TO." <".TO.">\r\n".
   "Date: ".date("r")."\r\n";

  $msg = 'Name: '.$_POST['yourname']."\n".
    'E-Mail: '.$_POST['from']."\n\n".
    'Text:'."\n".$text;
  $msg = stripslashes($msg);
?>

// ...

<?php
  if ((empty($from) || empty($text)) || (!validate_email($_POST['from'])))
  {
     echo "

Bitte füllen Sie mindestens die Felder 'E-Mail Adresse' und 'Text' aus und überprüfen Sie ihre E-Mail Adresse
     auf Gültigkeit.</p>";
  }
  else if (!mail($to, $subject, $msg, $headers))
  {
    echo '

Es ist ein Fehler beim Senden der E-Mail aufgetreten.</p>';
  }
  else
  {
    echo '

Die E-Mail wurde erfolgreich gesendet.</p>';
  }
?>
Ist es jetzt etwas sicherer?
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von x000x
x000x

Registriert seit: 21. Jan 2004
Ort: Bei Hamburg
308 Beiträge
 
Delphi XE2 Professional
 
#29

Re: [PHP] Email senden

  Alt 7. Nov 2005, 23:40
also ich sehe im moment nichts mehr. bis auf $subject, aber in wie weit, bzw. ob überhaupt man das missbrauchen kann,
dazu fehlen mir die php kenntnisse...
Peter
-= Gruss Peter =-
-= alias x000x =-
  Mit Zitat antworten Zitat
ripper8472

Registriert seit: 17. Aug 2003
275 Beiträge
 
#30

Re: [PHP] Email senden

  Alt 7. Nov 2005, 23:44
$subject wuerd ich auch im code festlegen.
von irgendwas ausgehen ist der erste schritt...
moeglicherweise kann man so weitere header einbauen, wie das mit $from schon gemacht wurde...
Christoph
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 3 von 5     123 45      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:06 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz