Forum: PC-Programmierung Zeitgemäß Email senden per PHP


von Johann (Gast)


Lesenswert?

Hi,

ich möchte ein paar Formular-Eingaben per Email senden(am besten 
server-seitig, also ohne SMTP) und suche ein minimal-Beispiel, wo z.B. 
die Eingaben gefiltert werden, damit da keiner irgendwelchen Mist 
anstellt.
Nun habe ich gelesen, dass mail() angeblich nicht mehr zeitgemäß wäre 
und man besser auf eine sendmail-Klasse oder ähnliches zurückgreifen 
sollte.

Stimmt das? Und hat jemand hier ein zuverlässig funktionierendes 
Beispiel, wie man 3 oder 4 Formularfelder sicher per Email senden kann?

Das wäre echt sehr nett...

LG,
Johann

von Läubi .. (laeubi) Benutzerseite


Lesenswert?

Johann schrieb:
> also ohne SMTP

Das heißt dein Mailserver ist ein lokaler auf dem auch der Webserver 
liegt?

> Nun habe ich gelesen, dass mail() angeblich nicht mehr zeitgemäß wäre

Naja, besseres gibt es immer aber für

> 3 oder 4 Formularfelder

Per mail senden ist es allemal ausreichend WENN dein Provider die 
Funktion erlaubt, das könnte nämlich eher ein Problem sein.

> sicher per Email

Mail ist per-se ein "unsicheres" Verfahren, also ggf. mal die 
Anforderungen an "sicher" definieren.

: Bearbeitet durch User
von Frank (Gast)


Lesenswert?

PHP-Mailer gibts wie Sand am Meer. Auch gibts simpel aufrufbare 
"fertige" Funktionen, die ein POST-Argument (z.B. den Inhalt eines 
Textarea) per SMTP versenden. Die Gefahr, ausführbaren Code 
untergeschoben zu bekommen kann man mit sog. Escape- bzw. 
Filter-Routinen (gehören zum Sprachumfang) unterbinden.

An SMTP führt bei Mail Nichts vorbei. Alternativ dazu könntest du die 
Einträge direkt in eine eigene Datenbank (z.B. MySQL) einlaufen lassen, 
dann musst du aber selber regelmäßig nachsehen.

von Johann (Gast)


Lesenswert?

Hallo,

also Mail ohne SMTP versenden funktioniert wunderbar. Ich habe mir mal 
mit einem Testscript und dem mail()-Befehl eine Mail zugesendet, ganz 
ohne SMTP-Parameter.

Sicherheit definiere ich so, dass mein Script nicht zum Versenden von 
Spam an beliebige Empfänger umfunktioniert werden kann, oder das mir 
Robots hunderte von Emails mit irgendwelchem Müll senden.

Da es sich um Formulare mit variablem Inhalt(Text und Zahlen) handelt 
und ich kein Hacker bin, suche ich ein "erprobtes" Script, man muss ja 
das Rad nicht immer neu erfinden und wer weiß, ob ich alles bedenke, was 
diesen kranken Typen einfällt...

Gruß,
Johann

von Kaj (Gast)


Lesenswert?

Johann schrieb:
> sicher per Email

Es gibt KEIN "sicher". Es gibt immer einen der schlauer ist und deine 
Sicherheitsmaßnahmen austricksen kann.

beispiel (unabhängig von sprache und anwendung):
du willst verhindern das jemand den tag "<script>" einschleusen kann. 
Also filterst du den tag einfach raus...
Was machst du wenn ich jetzt aber "<scr<script>ipt>" schreibe? Den 
vollständigen tag findest du und filterst ihn raus, dadurch setzt du 
aber den anderen tag zusammen...
Jetzt denkst du dir: Naja, filter ich halt mehr mals.
Wie oft willst du denn filtern? 10 mal? 100 mal? 1000 mal?
Dann frag dich an der stelle wie das auf die laufzeit geht.
genauso esc-sequenzen. was machst du wenn die sachen in hex-codierung 
oder sonstwie eingegeben werden?
Natürlich bringt php einige funktionen mit um den meisten kram zu 
filtern oder zu entschärfen.
Aber auch diese Funktionen kann man austricksen, weil es immer einen 
gibt der besser ist.
Es gibt KEIN "sicher", von dem Gedanken kannst du dich gepflegt 
verabschieden.

All input ist evil, until proven otherwise!


Johann schrieb:
> also ohne SMTP

Colle idee, wenn du noch erklären magst wie das funktionieren soll...
SMTP ist DAS Protokoll um Mails zu versenden!
POP3, IMAP, SMAP sind dazu da, um auf die Mails auf dem Mailserver 
zuzugreifen, aber nicht um die Mails zu versenden.

von Vn N. (wefwef_s)


Lesenswert?

Kaj schrieb:
> Was machst du wenn ich jetzt aber "<scr<script>ipt>" schreibe? Den
> vollständigen tag findest du und filterst ihn raus, dadurch setzt du
> aber den anderen tag zusammen...

Durch "&lt;scr&lt;script&gt;ipt&gt;" ersetzen. Wie jeder andere auch.

von Johann (Gast)


Lesenswert?

>Colle idee, wenn du noch erklären magst wie das funktionieren soll...
>SMTP ist DAS Protokoll um Mails zu versenden!

Jetzt stell dich bitte mal nicht extra dumm...es sollte klar sein, dass 
ich damit nur sagen wollte, dass ich mich im Script nicht um 
irgendwelche RFCs bzw. Protokolle kümmern muss(SMTP-Server, 
Benutzername, Passwort, Port, Authentifizierung...), sondern dass ich 
einfach nur mail() benutze und PHP bzw. sendmail sich um den Rest 
kümmern.

Genauso ist mir klar, dass es keine absolute Sicherheit gibt. Aber wenn 
ich schon filter, dann am besten gegen eine WhiteList. Ich würde also 
konsequent nur Zeichen zulassen, die ich vorher als gut definiert habe. 
Also a-z, A-Z, 0-9 und eventuell noch . , -
Alles andere, also z.B. \ < > würden da konsequent rausfliegen! Wenn 
html zu unsicher ist, wird die Mail eben als PlainText versendet.

von Läubi .. (laeubi) Benutzerseite


Lesenswert?

Johann schrieb:
> Sicherheit definiere ich so, dass mein Script nicht zum Versenden von
> Spam an beliebige Empfänger umfunktioniert werden kann

Das hängt ja von dir ab, wenn du dort einen festen String einträgst kann 
da schon nix passieren.

Johann schrieb:
> oder das mir Robots hunderte von Emails mit irgendwelchem Müll senden

Naja, meist machen die sich nicht für eine einzelne Seite die mühe, wenn 
du das wirklich ausschließen willst, und der Meinung bist, dass deine 
User dann dein Formular noch nutzen kannst du ein Captcha einrichten.

von Vn N. (wefwef_s)


Lesenswert?

Läubi .. schrieb:
> Naja, meist machen die sich nicht für eine einzelne Seite die mühe, wenn
> du das wirklich ausschließen willst, und der Meinung bist, dass deine
> User dann dein Formular noch nutzen kannst du ein Captcha einrichten.

Dann aber bitte ein ordentliches und nicht den selbstgemachten Murks den 
man oft sieht, der für Robots leichter zu lösen ist als für Menschen.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.