Any: string an mail übergeben..... Sicherheit

wenn ich einen String an meine MYSQL Datenbank übegeben maskiere ich diesen mit: mysql_escape_string ,

wie mache ich das, wenn ich einen String in eine Email einfügen möchte, die ich dann über den Server verschicke. So das der Inhalt des Strings nichts anstellen kann?

Andy

  1. Hallo

    wenn ich einen String an meine MYSQL Datenbank übegeben maskiere ich diesen mit: mysql_escape_string ,

    wie mache ich das, wenn ich einen String in eine Email einfügen möchte, die ich dann über den Server verschicke. So das der Inhalt des Strings nichts anstellen kann?

    Voarausgesetzt, du willst eine Nurtextnachricht erzeugen, bis auf eine eventuell mögliche Plausibilitätsprüfung garnicht. Bei HTML-Mails ist – wohl kaum verwunderlich – htmlspecialchars angesagt.

    Tschö, Auge

    --
    Verschiedene Glocken läuteten in der Stadt, und jede von ihnen vertrat eine ganz persönliche Meinung darüber, wann es Mitternacht war.
    Terry Pratchett, "Wachen! Wachen!"
    ie:{ fl:| br:> va:) ls:[ fo:) rl:( ss:| de:> js:| zu:}
    Veranstaltungsdatenbank Vdb 0.3
    1. Hello,

      Voarausgesetzt, du willst eine Nurtextnachricht erzeugen, bis auf eine eventuell mögliche Plausibilitätsprüfung garnicht. Bei HTML-Mails ist – wohl kaum verwunderlich – htmlspecialchars angesagt.

      Nicht ganz richtig:

      Selbstverständlich müssen auch für den email-Body eine Content-Codierung und ein Transfer-Encoding angegeben werden, sonst stellt der Client nachher Unsinn dar. Die Mailheader müssen also zur Codierung des Inhaltes passen.

      Für die Mail-Kopfdaten (from, to, subject, usw. gelten noch verschärftere Regeln.

      Bei reinen ASCII-Mails fällt der Zinnober natürlich weg.

      Liebe Grüße aus dem schönen Oberharz

      Tom vom Berg

      --
       ☻_
      /▌
      / \ Nur selber lernen macht schlau
      http://bikers-lodge.com
  2. Hallo Andy,

    Auf deine eigentliche Frage hast du ja schon eine Antwort, aber:

    wenn ich einen String an meine MYSQL Datenbank übegeben maskiere ich diesen mit: mysql_escape_string ,

    das ist zwar richtig gemeint aber schlecht umgesetzt. Die Funktion mysql_escape_string() ist bereits seit Version 5.3 als veraltet eingestuft und sollte durch mysql_real_escape_string() ersetzt werden. Seit PHP 5.5 ist allerdings die komplette mysql-Erweiterung als veraltet eingestuft worden und sollte entweder durch die mysqli oder PDO ersetzt werden.

    Gruß,
    Tobias

  3. Tach!

    wenn ich einen String an meine MYSQL Datenbank übegeben maskiere ich diesen mit: mysql_escape_string ,

    Das ist zu pauschal und damit nicht in jedem Fall richtig. Maskieren muss man Werte, die in Strings in SQL-Statements eingefügt werden. Für Nicht-Strings sind andere Prüfungen/Maßnahmen notwendig. Und mit Prepared Statements ergibt sich gleich gar keine Notwendigkeit des Maskierens (mit Ausnahme von LIKE).

    wie mache ich das, wenn ich einen String in eine Email einfügen möchte, die ich dann über den Server verschicke. So das der Inhalt des Strings nichts anstellen kann?

    Das kommt darauf an, wo der String landen soll. Im Header geht das anders als im Body, und da ist es abhängig von der Art des Inhalts. Am besten ist es, wenn man all diese Feinheiten gar nicht beachten muss, wenn das Ziel lediglich das Wegschicken von Mails und nicht das Verständnis deren Aufbaus ist. Nimm lieber eine fertige Mailer-Klasse, wie zum Beispiel den Swift-Mailer.

    Zum allgemeinen grundlegenden Verständnis sei noch der Kontextwechsel-Artikel empfohlen.

    dedlfix.