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
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.
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.
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
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.
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 "<scr<script>ipt>" ersetzen. Wie jeder andere auch.
>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.
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.
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.