ct 22 2005 Mail-Formulare absichern

Fragen zu allen Themen rund ums Programmieren außerhalb von phpBB können hier gestellt werden - auch zu anderen Programmiersprachen oder Software wie Webservern und Editoren.
Benutzeravatar
Martin Truckenbrodt
Mitglied
Beiträge: 1143
Registriert: 15.08.2003 23:16
Wohnort: Südthüringen
Kontaktdaten:

ct 22 2005 Mail-Formulare absichern

Beitrag von Martin Truckenbrodt »

Hallo miteinander,
schöner Artikel auf den Seiten 208-209. Unter dem Soft_link bekommt man auch ein noch stärker abgesichertes Skript.

Nur funzt bei mir die Mailcode Abfrage nicht - bekomme immer die die() Meldung:

Code: Alles auswählen

 //Erzeuge einen zufällig aussehenden Zugangscode aus dem Datum ...
$code = chr(date("m") * 3 + date("y") + 30) . chr(date("d") * 2 + 40);
  //... den der Anwender mittels verborgenem Eingabefeld übergibt.
  //So lässt sich das Gros der skriptgesteuerten Angriffe von
  //vornherein abblocken.
if (!isset($_POST['code']) || $_POST['code'] != $code) die ('Mailcode fehlt!');
  //Liste der zu überprüfenden Formularfelder:
  //'absender' muss genau eine Mailadresse sein,
  //'betreff' ist ein mindestens drei Zeichen langer Text ohne Umbruch,
  //'text' muss zehn Zeichen lang sein.

...

<input type="hidden" id="code" name="code" value="
<?php
//Der gleiche Algorithmus wie oben!
//htmlentities() entschärft eventuelle Sonderzeichen.
echo(htmlentities(chr(date("m") * 3 + date("y") + 30) . chr(date("d") * 2 + 40)));?>
						"/>
Lösche ich testweise

Code: Alles auswählen

 || $_POST['code'] != $code
heraus, funzt die Sache.

Danke und Gruß Martin
Advanced Block MOD 1.1.4 ist released! - Verhindere Spam auf Deinem phpBB3 Board mit Stop Forum Spam, BotScout, Akismet, Project Honey Pot und verschiedenen IP-RBL und Domain-RBL DNS Blacklisten! - Meine MODs - phpBB Complete Core
Benutzeravatar
Martin Truckenbrodt
Mitglied
Beiträge: 1143
Registriert: 15.08.2003 23:16
Wohnort: Südthüringen
Kontaktdaten:

Beitrag von Martin Truckenbrodt »

Hallo,
das testweise Herausnehmen von

Code: Alles auswählen

htmlentities
bringt leider auch nichts. :-?

Gruß Martin
Advanced Block MOD 1.1.4 ist released! - Verhindere Spam auf Deinem phpBB3 Board mit Stop Forum Spam, BotScout, Akismet, Project Honey Pot und verschiedenen IP-RBL und Domain-RBL DNS Blacklisten! - Meine MODs - phpBB Complete Core
Jensemann
Ehemaliges Teammitglied
Beiträge: 2549
Registriert: 25.02.2002 01:00

Beitrag von Jensemann »

Guck doch erstmal, auf was $_POST["code"] bei dir gesetzt ist, nachdem du das Formular abschickst.
Benutzeravatar
Martin Truckenbrodt
Mitglied
Beiträge: 1143
Registriert: 15.08.2003 23:16
Wohnort: Südthüringen
Kontaktdaten:

Beitrag von Martin Truckenbrodt »

Hallo Jens,
die Übergabe von 'code' klappt, $_POST["code"] bringt (auf den ersten Blick) das selbe Ergebnis wie $code.

Ich habe gerade mal Folgendes gemacht:

Code: Alles auswählen

if (!isset($_POST['code']) || $_POST['code'] == $code) die ('Mailcode fehlt!');
Jetzt scheint es funzen. Nur komme ich mangels Erfahrung mit der Syntax dieser Zeile nicht ganz zurecht. :roll:

Funktioniert das Skript jetzt richtig oder habe ich nur ein Workaround erstellt? :-?

Hier gibt es das komplette Mail-Formular: ftp://ftp.heise.de/pub/ct/listings/0522-208.zip

Gruß Martin
Zuletzt geändert von Martin Truckenbrodt am 23.11.2005 22:39, insgesamt 1-mal geändert.
Advanced Block MOD 1.1.4 ist released! - Verhindere Spam auf Deinem phpBB3 Board mit Stop Forum Spam, BotScout, Akismet, Project Honey Pot und verschiedenen IP-RBL und Domain-RBL DNS Blacklisten! - Meine MODs - phpBB Complete Core
Benutzeravatar
Martin Truckenbrodt
Mitglied
Beiträge: 1143
Registriert: 15.08.2003 23:16
Wohnort: Südthüringen
Kontaktdaten:

Beitrag von Martin Truckenbrodt »

Hallo,
habe mich bezüglich Operatoren etwas schlauer gemacht 8) :
Ich hatte wohl zuletzt wirklich nur ein Workaround erstellt. :cry:

Das Problem scheint wirklich der Ausdruck

Code: Alles auswählen

$_POST['code'] != $code
zu sein.
Sind das vielleicht irgendwie unterschiedliche Datentypen?

Gruß Martin
Advanced Block MOD 1.1.4 ist released! - Verhindere Spam auf Deinem phpBB3 Board mit Stop Forum Spam, BotScout, Akismet, Project Honey Pot und verschiedenen IP-RBL und Domain-RBL DNS Blacklisten! - Meine MODs - phpBB Complete Core
Benutzeravatar
Martin Truckenbrodt
Mitglied
Beiträge: 1143
Registriert: 15.08.2003 23:16
Wohnort: Südthüringen
Kontaktdaten:

Beitrag von Martin Truckenbrodt »

Hallo,

gettype($code); und gettype($_POST['code']); ergeben beide als Ergebnis string.

Hilfe! :(

Gruß Martin
Advanced Block MOD 1.1.4 ist released! - Verhindere Spam auf Deinem phpBB3 Board mit Stop Forum Spam, BotScout, Akismet, Project Honey Pot und verschiedenen IP-RBL und Domain-RBL DNS Blacklisten! - Meine MODs - phpBB Complete Core
Benutzeravatar
Pyramide
Ehrenadmin
Beiträge: 12734
Registriert: 19.04.2001 02:00
Wohnort: Meschede

Beitrag von Pyramide »

Meine Vermutung wäre, daß das Problem die Leerzeile hier ist:

Code: Alles auswählen

<input type="hidden" id="code" name="code" value="
<?php
KB:knigge
Benutzeravatar
Martin Truckenbrodt
Mitglied
Beiträge: 1143
Registriert: 15.08.2003 23:16
Wohnort: Südthüringen
Kontaktdaten:

Beitrag von Martin Truckenbrodt »

Hallo Pyramide,

Treffer versenkt! Bist ein Schatz! :wink:

Ich hätte den Code doch nicht "aufräumen" sollen! :x

Ich werde es Dir nie vergessen! :wink:

Danke und Gruß Martin
Zuletzt geändert von Martin Truckenbrodt am 27.11.2005 00:44, insgesamt 1-mal geändert.
Advanced Block MOD 1.1.4 ist released! - Verhindere Spam auf Deinem phpBB3 Board mit Stop Forum Spam, BotScout, Akismet, Project Honey Pot und verschiedenen IP-RBL und Domain-RBL DNS Blacklisten! - Meine MODs - phpBB Complete Core
Benutzeravatar
Martin Truckenbrodt
Mitglied
Beiträge: 1143
Registriert: 15.08.2003 23:16
Wohnort: Südthüringen
Kontaktdaten:

Beitrag von Martin Truckenbrodt »

Hallo,
falsl jemand auch das Skript von der c't eingebaut hat und sich wundert wieso es am 25.11. noch geht und am 26.11. nicht mehr, hier die Auflösung:
Die Funktion für den Mailcode muss wie folgt ausssehen, damit man vernünftige ASCII Zeichen bekommt (nur Großbuchstaben und vor allem keine Sonderzeichen! :evil: ):

Code: Alles auswählen

chr(date("m") + date("y") + 59) . chr(floor(date("d") / 2) + 65);
Ansonsten finde ich das Skript super. Man kann z.B. auch recht einfach eine Auswahl für mehrere verschiedene Ansprechpartner einbauen.

Bin schon am überlegen eventuell einen phpBB MOD draus zu machen. Alle ähnlichen MODs, die ich die letzten Tagen sah, waren wesentlich umfangreicher, was IMO für ein Notfall Kontaktformular (Kennwort vergessen, Forum kaputt, Beschwerde, usw...) nicht notwendig ist.

Gruß Martin
Advanced Block MOD 1.1.4 ist released! - Verhindere Spam auf Deinem phpBB3 Board mit Stop Forum Spam, BotScout, Akismet, Project Honey Pot und verschiedenen IP-RBL und Domain-RBL DNS Blacklisten! - Meine MODs - phpBB Complete Core
Benutzeravatar
easygo
Mitglied
Beiträge: 2170
Registriert: 03.09.2004 13:45
Kontaktdaten:

Beitrag von easygo »

Martin Truckenbrodt hat geschrieben:falsl jemand auch das Skript von der c't eingebaut hat und sich wunder weiso es am 25.11. noch geht und am 26.11. nicht mehr
Nö, kann ich nicht bestätigen. Funktioniert nach wie vor. easy
Antworten

Zurück zu „Coding & Technik“