php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger

PHP Einsteiger PHP Problemlösungen für Spracheinsteiger
Archive: 2004, 2004/2, 2005, 2005/2, 2006, 2007, 2008, 2009, 2010,

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 02.02.2012, 02:30  
Neuer Benutzer
 
Registriert seit: 02.02.2012
Beiträge: 6
PHP-Kenntnisse:
Anfänger
tuki befindet sich auf einem aufstrebenden Ast
Standard PHPMailer - serverseitiges validieren der Eingabedaten nötig?

Ich verwende phpmailer v5.1 nach einer Anleitung von tanmar.info

In einer HTML-Datei mit einem E-Mail Formular werden die Daten mit action=post an eine php-Datei übergeben.
Code:
...
      <form action="sendmail.php" method="post" enctype="multipart/form-data" name="formular" class="kontaktformular">
	  <fieldset>
        <legend>Pers&ouml;nliche Daten</legend>
	  
 	  <label for="firma">Firma</label>
        <input type="text" id="firma" name="firma" maxlength=40>
        <br />
 	    <label for="name">Name<span class="hervorhebung">*</span></label>
        <input type="text" id="nachname" name="nachname" maxlength=40>
        <br />

...
        <label for="email2">E-Mail<span class="hervorhebung">*</span></label> 
        <input type="text" id="email2" name="Email" maxlength=40 size=25>
        <br />
        <span class="hervorhebung">*</span> erforderlich 
		
		...

		</fieldset>
	  <input type="submit" id="submit" name="Submit" value="Abschicken">
<input type="reset" id="submit2" name="submit2" value="Zur&uuml;cksetzen"><br />
</form>
Mit js werden die Pflichtfelder in der HTML-Datei auf Vollständigkeit geprüft.
Code:
function checkForm() {
	//Element ansprechen, Länge bestimmen
	if (document.forms[0].nachname.value.length<3) {
	//Warnung ausgeben
	  alert('Bitte "Nachname" ausfüllen');
	  //Cursor ins Feld stellen
	  document.forms[0].nachname.focus();
	  return(false);
	}
	
	...
}
Die E-Mails werden wie gewünscht übertragen.

Nun erhalte ich regelmäßig leere E-Mailanfragen, was eigentlich nicht sein sollte. Darüber hinaus nervt es.
Im selfhtml-Forumarchiv findet sich ein Post, der sich mit genau dieser Frage beschäftigt. http://forum.de.selfhtml.org/archiv/2007/10/t160286/
Es scheinen Bots zu sein, die die php-Datei aufrufen. In dem Post bleibt mir allerdings verborgen, wie mit der Situation umgegengen werden soll. Es wird auch vorgeschlagen serverseitig zu validieren.

Meine Fragen:
Stellt phpmailer ein Sicherheitsrisiko dar, das es zu verringern gilt?
Ist es besser serverseitig zu validieren oder ist das unnötig?
Die Version phpmailer_v5.1 läuft problemlos. Sollte trotzdem auf phpmailer_5.2.1 umgestellt werden?

Ich danke für eure Zeit.
tuki
tuki ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 02.02.2012, 07:56  
Erfahrener Benutzer
 
Benutzerbild von jspit
 
Registriert seit: 19.08.2011
Beiträge: 701
PHP-Kenntnisse:
Anfänger
jspit wird schon bald berühmt werden
Standard

Zitat:
Stellt phpmailer ein Sicherheitsrisiko dar, das es zu verringern gilt?
Selbst nicht, aber die Daten die du dort einspeist, solltest du auf Herz und Nieren prüfen.
Zitat:
Ist es besser serverseitig zu validieren oder ist das unnötig?
Grundsätzlich immer serverseitig validieren, auf clientseitiges js kann man sich nicht verlassen.
Zitat:
Die Version phpmailer_v5.1 läuft problemlos. Sollte trotzdem auf phpmailer_5.2.1 umgestellt werden?
Wenn du keine Probleme hast, wozu?

Was die Bots betrifft, schau mal hier rein: AntiSpam - PHP form class
Extrem einfach zu nutzen, die Beipiele dort sind jedoch nicht als Vorbild für eine ausreichende Validierung der Eingabewerte zu sehen.
jspit ist offline   Mit Zitat antworten
Alt 02.02.2012, 08:03  
Erfahrener Benutzer
 
Benutzerbild von Arne Drews
 
Registriert seit: 22.04.2009
Beiträge: 3.486
PHP-Kenntnisse:
Anfänger
Arne Drews wird schon bald berühmt werdenArne Drews wird schon bald berühmt werden
Arne Drews eine Nachricht über Skype™ schicken
Standard

Generell, wie jspit bereits gesagt hat, ist eine serverseitige Prüfung der Daten Pflicht. Egal ob Du sie ausgeben, in eine Datei bzw. DB speicheren oder per Mail versenden willst!
JavaScript bringt Dir bei Bots nichts, daher kommen die ohne Probleme durch.
Zitat:
Zitat:
Die Version phpmailer_v5.1 läuft problemlos. Sollte trotzdem auf phpmailer_5.2.1 umgestellt werden?
Wenn du keine Probleme hast, wozu?
Warum nicht?! Ist doch schnell gemacht und viele Änderungen an den Scripten sind hinterher sicher nicht notwendig, da sich die Funktionen vom PHPmailer nicht wirklich anders handhaben lassen.
Dafür hast Du aber die aktuelle Version im Background.
__________________
Phantasie ist wichtiger als Wissen, denn Wissen ist begrenzt.
Probleme kann man niemals mit derselben Denkweise lösen, durch die sie entstanden sind.
Albert Einstein
Arne Drews ist offline   Mit Zitat antworten
Alt 02.02.2012, 08:32  
Erfahrener Benutzer
 
Benutzerbild von jspit
 
Registriert seit: 19.08.2011
Beiträge: 701
PHP-Kenntnisse:
Anfänger
jspit wird schon bald berühmt werden
Standard

'never change a running system' ist mein Motto für fertige Projekte. Ausnahme: es betrifft Sicherheitsfragen. Das Projekt von tuki ist aber wohl noch in der Entwicklungsphase, da sollte man schon mit der aktuellen Version arbeiten.
jspit ist offline   Mit Zitat antworten
Alt 02.02.2012, 12:14  
Erfahrener Benutzer
 
Benutzerbild von Arne Drews
 
Registriert seit: 22.04.2009
Beiträge: 3.486
PHP-Kenntnisse:
Anfänger
Arne Drews wird schon bald berühmt werdenArne Drews wird schon bald berühmt werden
Arne Drews eine Nachricht über Skype™ schicken
Standard

Zitat:
Ausnahme: es betrifft Sicherheitsfragen.
Ich denke das könnte ein Grund sein, daß eine neuere Version vorliegt...
__________________
Phantasie ist wichtiger als Wissen, denn Wissen ist begrenzt.
Probleme kann man niemals mit derselben Denkweise lösen, durch die sie entstanden sind.
Albert Einstein
Arne Drews ist offline   Mit Zitat antworten
Alt 02.02.2012, 14:29  
Neuer Benutzer
 
Registriert seit: 02.02.2012
Beiträge: 6
PHP-Kenntnisse:
Anfänger
tuki befindet sich auf einem aufstrebenden Ast
Standard

Danke für eure schnelle Reaktion.

Ok, ich werde also auf phpmailer_5.2.1 umstellen.

Das Projekt ist jetzt in der Re-Entwicklungsphase Es handelt sich um ein bestehendes Kontaktformular und es ist so online.

Das ursprüngliche Problem waren gesendete leere E-Mails (durch Aufrufe der sendmail.php, von wem auch immer) Das hat mich dann zu den Fragen der serverseitigen Valdierung gebracht.

Ich habe die Seite AntiSpam - PHP form class angesehen
... und inzwischen eingefügt.
Mit den Beispielformularfeldern funktioniert es.
Aus dem Formulardokument wird der phpmailer aufgerufen, die Datei sendmail.php. Diese wird jedoch immer noch verarbeitet, wenn sie von extern aufgerufen wird. Warum auch nicht?

Also besteht mein ursprüngliches Anliegen genau so wie vorher.
Wie kann ich die übergebenen Daten in der Datei sendmail.php prüfen, damit kein leeres Dokument versand wird?

Ich danke für Anregungen. (Oder für Suchbegriffe - ich weiß nicht genau, wonach ich suchen soll)

Geändert von tuki (02.02.2012 um 16:33 Uhr).
tuki ist offline   Mit Zitat antworten
Alt 02.02.2012, 17:29  
Erfahrener Benutzer
 
Benutzerbild von jspit
 
Registriert seit: 19.08.2011
Beiträge: 701
PHP-Kenntnisse:
Anfänger
jspit wird schon bald berühmt werden
Standard

Zitat:
Zitat von tuki Beitrag anzeigen
Also besteht mein ursprüngliches Anliegen genau so wie vorher.
Wie kann ich die übergebenen Daten in der Datei sendmail.php prüfen, damit kein leeres Dokument versand wird?
Versteh nicht wo da dein Problem liegt. Hast du dir mal das einfache Beispiel simple_antispam.php angesehen?
Dort wird dies gezeigt. Kannst auch online testen: Einfaches Beispiel für Antispamformular.
jspit ist offline   Mit Zitat antworten
Alt 02.02.2012, 17:58  
Neuer Benutzer
 
Registriert seit: 02.02.2012
Beiträge: 6
PHP-Kenntnisse:
Anfänger
tuki befindet sich auf einem aufstrebenden Ast
Standard

Ja, genau. Das Beispiel läuft. Darauf basierend werde ich mein bestehendes Formular umschreiben.
Aber:
Die Daten, die ich aus dem Formular erhalte, werden von phpmailer weiterverarbeitet, und zwar mit der Datei sendmail.php, welche die phpmailer-Klasse einbindet. Und wenn diese Datei aufgerufen wird, wird eine leere Mail gesendet.

Oder habe ich alles falsch zusammengebaut??
HTML (oder bald php) mit Email-formular
Daten werden per submit an sendmail.php übergeben
sendmail.php ruft class.phpmailer.php auf und sendet Email.

Was kann ich am Ablauf verbessern?

Oder muss ich sendmail.php includen?

Geändert von tuki (02.02.2012 um 18:06 Uhr).
tuki ist offline   Mit Zitat antworten
Alt 02.02.2012, 20:26  
Erfahrener Benutzer
 
Benutzerbild von jspit
 
Registriert seit: 19.08.2011
Beiträge: 701
PHP-Kenntnisse:
Anfänger
jspit wird schon bald berühmt werden
Standard

Üblicherweise wird das Formular mit in die Anwendung intergiert. So kannst du es einfach realisieren, daß der Nutzer bei Fehlern nicht nochmal alles eingeben muß (-> Beispiel: Maiadresse eingeben und Nachricht leer lassen). Bei mir ist der Aufbau ganz grob so:
Code:
 :
require $ipath.'class.phpmailer.php';
require $ipath.'class.antispam.php';
 :
//functionen
 :
$asp = new AntiSpam();
 :
//POSTs auswerten + prüfen
 :
if($allesFuerMailVersandOk) {
  //Nachricht senden
   :
}
else
{
  if($spam) {
     echo 'Die Informationsübermittlung wurde abgewiesen. ';
     exit();
  }
  else
  {
    //Formular ausgeben

  }
}
jspit ist offline   Mit Zitat antworten
Alt 03.02.2012, 00:27  
Neuer Benutzer
 
Registriert seit: 02.02.2012
Beiträge: 6
PHP-Kenntnisse:
Anfänger
tuki befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Üblicherweise wird das Formular mit in die Anwendung intergiert.
Das war doch ein wichtiger Ansatz für mich
Ich habe jetzt alles in meine Kontaktformular-Datei geschrieben und es funktioniert. (Noch mit einer Reihe Fehlern im formular, aber das kriege ich hin) Also die sendmail.php nicht per include, sondern direkt eingefügt. Damit kann man sie nicht mehr von extern aufrufen.

Erst mal besten Dank für deine Geduld
tuki ist offline   Mit Zitat antworten
Antwort


Themen-Optionen
Thema bewerten
Thema bewerten:

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 an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
(Wamp) Phpmailer einbinden in vorhandenes Browsergame Speed Server, Hosting und Workstations 8 11.08.2011 14:41

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
phpmailer_v5.1 tutorial, phpmailer formular beispiel, phpmailer fertiges formular, phpmailer kontaktformular beispiel, phpmailer_v5.2.1, phpmailer deutsche anleitung, php serverseitige validierung, phpmailer aufrufen, phpmailer felder bestimmen

Alle Zeitangaben in WEZ +2. Es ist jetzt 21:47 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum