Ich fühle mich etwas peinlich, weil ich einen Mail-Körper mit PHP erzeuge, ohne die Variablen zu umgehen. In HTML verwende ich htmlspecialchars () oder ähnliche Funktionen, für Befehlszeilen escapeshellarg (), aber für Mails? Zum Beispiel so etwas:
%Vor%Was könnte ein möglicher Angreifer mit einem Skript wie dem obigen tun und wie könnte ich mich vor einem solchen Angriff schützen? Oder ist PHP mail () gespeichert und warum?
Aktualisieren
Siehe das Beispiel:
Der grundlegende E-Mail-Nachrichtentext ist reiner Text. Wenn Sie einen anderen Typ wie HTML oder eine mehrteilige Nachricht verwenden möchten, müssen Sie die MIME-Erweiterung verwenden und den Typ entsprechend mit Inhaltstyp angeben (z. B. text/html
für HTML oder multipart/…
für einen mehrteiligen Text) Nachricht).
Aus Sicherheitsgründen gibt es keine Möglichkeit, etwas Schädliches zu injizieren (zumindest nicht laut Spezifikation). Selbst Nicht-ASCII-Zeichen sollten trotz der fehlenden Deklaration der verwendeten Zeichencodierung korrekt behandelt werden.
Allerdings kann es immer noch einige Fehler in E-Mail-Clients geben, die auf diese Weise ausgenutzt werden können. Aber ich bezweifle das.
Es ist nicht gegen XSS atack gesichert, denn wenn Ihre E-Mail HTML enthält, kann jemand sie in E-Mails einfügen.
Das gute Verhalten besteht darin, gültige Daten zu prüfen und zu validieren. Wenn ich du wäre, würde ich dieser Schnur entkommen. Es kostet fast nichts und man muss sich keine Sorgen machen, dass es nicht benutzt wird.
Gute Frage. Ich glaube nicht, dass Sie den Fließtext umgehen müssen, aber ich weiß, dass es möglich ist, Kopfzeilen zu einer Mail hinzuzufügen (wie ein BCC zu Tausenden von Adressen), wenn Sie dem Benutzer erlauben, eine von Adresse einzugeben. Also, wenn Sie Variablen in diese setzen, überprüfen Sie auf jeden Fall Newlines ( \n
und \r
), um sicherzustellen, dass keine zusätzlichen Header hinzugefügt werden.
Denken Sie so an den Text der E-Mail: "Mission top secret destination unbekannt". Wir wissen vielleicht nicht, welche Art von Client die Nachricht lesen wird, aber wir können vermuten, dass wir nicht wollen, dass Live, user-unescaped HTML in ihm auftaucht. Da viele Clients E-Mails in HTML lesen, wäre es am besten, wenn Sie htmlentities()
auf den vom Benutzer angegebenen E-Mail-Text legen.
Eine Methode aus meiner Escape-Klasse.
%Vor%========================================
Betrachten Sie mindestens so etwas und mehr bei Ihrer Recherche.
%Vor%Tags und Links php security email sendmail postfix-mta