Frage zu contact form 1.1.0
-
- Mitglied
- Beiträge: 1862
- Registriert: 23.12.2004 22:46
Hallo,
hätte da noch eine Verständnisfrage: Angenommen man würde auf die phpbb-eigene Funktion submit_post zurückgreifen, dann wären ja sowieso von vornherein alle Sicherheitsmaßnahmen ergriffen und gleichzeitig würde es auch noch eine Flood Control geben, oder?
Eine Flood Control wäre meines Erachtens schon sehr sinnvoll, weil das Kontaktformular sonst missbraucht werden könnte, um das ganze Board lahmzulegen.
Habe in Bezug auf die Frage, wie submit_post eingebunden werden könnte bzw. zur Flood-Problematik, zwei interessante Threads gefunden:
http://www.phpbb.de/viewtopic.php?p=346082#346082
http://www.phpbb.de/viewtopic.php?t=32324
LG, IPB_Flüchtling
hätte da noch eine Verständnisfrage: Angenommen man würde auf die phpbb-eigene Funktion submit_post zurückgreifen, dann wären ja sowieso von vornherein alle Sicherheitsmaßnahmen ergriffen und gleichzeitig würde es auch noch eine Flood Control geben, oder?
Eine Flood Control wäre meines Erachtens schon sehr sinnvoll, weil das Kontaktformular sonst missbraucht werden könnte, um das ganze Board lahmzulegen.
Habe in Bezug auf die Frage, wie submit_post eingebunden werden könnte bzw. zur Flood-Problematik, zwei interessante Threads gefunden:
http://www.phpbb.de/viewtopic.php?p=346082#346082
http://www.phpbb.de/viewtopic.php?t=32324
LG, IPB_Flüchtling
-
- Mitglied
- Beiträge: 1862
- Registriert: 23.12.2004 22:46
Verstehe ich sehr gut!AmShaegar hat geschrieben:gut, ich sag mal viel spaß weiterhin, ich für meinen teil bin fertig damit... falls es probleme geben sollte, sollte amn es einbauen, aber solange keine diesbezüglcihen schwierigkeiten auftreten... bis dann

Habe mir die Sache auch noch einmal angesehen und muss gestehen, dass ich zur Einbindung der phpbb-eigenen Posting-Funktion nicht imstande bin. Das übersteigt (derzeit) einfach meine Fähigkeiten.
Allerdings bin ich mir ziemlich sicher, dass ich es schaffen werde, cbacks Flood-control-Routine aus dem Cracker Tracker auch auf das Kontaktformular umzumünzen. Das Ganze wird aber vermutlich noch mehrere Tage dauern. Sobald ich eine Lösung gefunden habe, werde ich sie hier posten.
Herzlichen Dank noch einmal an AmShaegar!
LG, IPB_Flüchtling
-
- Mitglied
- Beiträge: 1862
- Registriert: 23.12.2004 22:46
So,
habe es jetzt tatsächlich geschafft, eine Flood Control in den Easy Contact Form - Mod zu integrieren, sodass man innerhalb eines frei festlegbaren Zeitraumes nur eine Kontaktabfrage abschicken kann.
Wichtig:
- Vor Eingriffen in die Datenbank unbedingt ein Backup anfertigen.
- Meine Abänderung von AmShaegars Code setzt voraus, dass cbacks CrackerTracker (siehe meine Signatur) installiert ist.
1. Führe in phpMyAdmin folgendes SQL-Query aus:
2. Befolge die unten stehenden Anweisungen:
Herzlichen Dank noch einmal an AmShaegar & cback!
LG, IPB_Flüchtling
habe es jetzt tatsächlich geschafft, eine Flood Control in den Easy Contact Form - Mod zu integrieren, sodass man innerhalb eines frei festlegbaren Zeitraumes nur eine Kontaktabfrage abschicken kann.
Wichtig:
- Vor Eingriffen in die Datenbank unbedingt ein Backup anfertigen.
- Meine Abänderung von AmShaegars Code setzt voraus, dass cbacks CrackerTracker (siehe meine Signatur) installiert ist.
1. Führe in phpMyAdmin folgendes SQL-Query aus:
Code: Alles auswählen
INSERT INTO phpbb_cracktrack (name, secval) VALUES ('lastcontact', '0');
Code: Alles auswählen
#
#-----[ OPEN ]------------------------------------------
#
lang_contact.php
#
#-----[ FIND ]------------------------------------------
#
//
// That's all, Folks!
#
#-----[ BEFORE, ADD ]------------------------------------------
#
$lang['Floodschutz'] = 'Über dieses Kontaktformular kann aus Sicherheitsgründen nur alle 30 Sekunden eine E-Mail abgeschickt werden. Bitte warte noch %s Sekunden, bis Du das Kontaktformular benutzen kannst.';
#
#-----[ OPEN ]------------------------------------------
#
contact_form.php
#
#-----[ FIND ]------------------------------------------
#
include($phpbb_root_path . 'includes/page_header.'.$phpEx);
#
#-----[ AFTER, ADD ]------------------------------------------
#
//
// CBACK CrackerTracker Flood Protection
//
$lcontimestamp = '';
$sql = "SELECT secval FROM " . CRACKTRACK . " WHERE name = 'lastcontact'";
if( !($result = $db->sql_query($sql)) )
{
message_die(CRITICAL_ERROR, "Could not query config information", "", __LINE__, __FILE__, $sql);
}
$row = $db->sql_fetchrow($result);
$lcontimestamp = $row['secval'];
if ( $lcontimestamp >= time() )
{
$waittime = 0;
$waittime = $lcontimestamp - time();
$waitmsg = '';
$waitmsg = sprintf($lang['Floodschutz'],$waittime);
message_die(GENERAL_MESSAGE, $waitmsg);
}
#
#-----[ FIND ]------------------------------------------
#
// Get users IP addy for mail header
$user_ip = get_ip();
#
#-----[ AFTER, ADD ]------------------------------------------
#
// Insert into tables by AmShaegar
$forum_id = '61'; // Gewünschtes Forum auswählen!!!
$poster_id = $userdata['user_id'];
$post_time = time();
$poster_ip = $user_ip;
$post_username = $userdata['session_logged_in'] ? $userdata['username'] : $from_name;
$enable_bbcode = '0';
$enable_html = '0';
$enable_smilies = '1';
$enable_sig = '0';
$topic_title = $enquiry;
$topic_poster = $poster_id;
$topic_time = $post_time;
$INS_topics = "INSERT INTO ".TOPICS_TABLE." (forum_id, topic_title, topic_poster, topic_time) VALUES ('$forum_id', '$topic_title', '$topic_poster', '$topic_time')";
mysql_query($INS_topics) or die("Leider ist ein Fehler aufgetreten. Die E-Mail wurde nicht verschickt.");
$SEL_t = "SELECT topic_id FROM ".TOPICS_TABLE." WHERE topic_time LIKE '$topic_time'";
$QUE_t = mysql_query($SEL_t);
$res_t = mysql_fetch_object($QUE_t);
$topic_id = $res_t->topic_id;
$INS_posts = "INSERT INTO ".POSTS_TABLE." (topic_id, forum_id, poster_id, post_time, poster_ip, post_username, enable_bbcode, enable_html, enable_smilies, enable_sig) VALUES ('$topic_id', '$forum_id', '$poster_id', '$post_time', '$poster_ip', '$post_username', '$enable_bbcode', '$enable_html', '$enable_smilies', '$enable_sig')";
mysql_query($INS_posts) or die("Leider ist ein Fehler aufgetreten. Die E-Mail wurde nicht verschickt.");
$bbcode_uid = '1234567890';
$post_subject = $enquiry;
$post_text = addslashes($message);
$SEL = "SELECT post_id FROM ".POSTS_TABLE." ORDER BY post_id DESC LIMIT 1";
$QUE = mysql_query($SEL);
$res = mysql_fetch_object($QUE);
$post_id = $res->post_id;
$UPD_topics = "UPDATE ".TOPICS_TABLE." SET topic_first_post_id = '$post_id', topic_last_post_id = '$post_id' WHERE topic_time LIKE '$topic_time'";
mysql_query($UPD_topics) or die("Leider ist ein Fehler aufgetreten. Die E-Mail wurde nicht verschickt.");
$INS_posts_text = "INSERT INTO ".POSTS_TEXT_TABLE." (post_id, bbcode_uid, post_subject, post_text) VALUES ('$post_id', '$bbcode_uid', '$post_subject', '$post_text')";
mysql_query($INS_posts_text) or die("Leider ist ein Fehler aufgetreten. Die E-Mail wurde nicht verschickt.");
$SEL_f = "SELECT forum_posts, forum_topics FROM ".FORUMS_TABLE." WHERE forum_id LIKE '$forum_id'";
$QUE_f = mysql_query($SEL_f);
$res_f = mysql_fetch_object($QUE_f);
$forum_posts = $res_f->forum_posts + 1;
$forum_topics = $res_f->forum_topics + 1;
$forum_last_post_id = $post_id;
$UPD_forums = "UPDATE ".FORUMS_TABLE." SET forum_posts = '$forum_posts', forum_topics = '$forum_topics', forum_last_post_id = '$forum_last_post_id' WHERE forum_id = '$forum_id'";
$ergebnis = mysql_query($UPD_forums);
if ($ergebnis) {
$stime = time() + 30; //hier wird das Flood-Intervall in Sekunden festgelegt
$sql = "UPDATE " . CRACKTRACK . " SET secval = " . $stime . " WHERE name = 'lastcontact'";
$db->sql_query($sql);
echo'<meta http-equiv="refresh" content="6;url=' . append_sid($phpbb_root_path . "index.$phpEx") . '">';
message_die(GENERAL_MESSAGE, $message = $lang['ESuccessfully'] . '<br /><br />' . sprintf($lang['Click_return_index'], '<a href="' . append_sid($phpbb_root_path . "index.$phpEx") . '">', '</a>') . '');
} else {
message_die(GENERAL_ERROR, $lang['EMain_error']);
exit;
}
// End of Insert into tables by AmShaegar
LG, IPB_Flüchtling
-
- Mitglied
- Beiträge: 352
- Registriert: 13.10.2005 22:18
- Wohnort: Dortmund
-
- Mitglied
- Beiträge: 1862
- Registriert: 23.12.2004 22:46
Hallo Dietmar,
brauchen ist vielleicht das falsche Wort. Also ich lasse mir auch keine E-Mails über das Kontaktformular mehr zuschicken - alle Kontaktanfragen wandern direkt in ein (unsichtbares) Forum.
Meine Lösung bietet halt einfach einen zusätzlichen Schutz, weil der Server über zuviele Kontaktanfragen in zu kurzer Zeit nicht mehr ins Schwitzen gebracht werden kann: http://de.wikipedia.org/wiki/Denial_of_Service
Aus derartigen Schutzüberlegungen heraus hat ja auch cback in seinen CrackerTracker einen Floodschutz für Neuregistrierungen und für die Suchfunktion eingebaut.
Stell Dir mal vor, jemandem gelingt es, das Captcha in der neuesten Version des Mods zu überlisten und er schickt Dir scriptgesteuert über Nacht alle paar Sekunden eine mehrere kb große Kontaktanfrage. Selbst wenn der Server das wegsteckt, hast Du am nächsten Morgen eine nette Überraschung...
LG, IPB_Flüchtling
brauchen ist vielleicht das falsche Wort. Also ich lasse mir auch keine E-Mails über das Kontaktformular mehr zuschicken - alle Kontaktanfragen wandern direkt in ein (unsichtbares) Forum.
Meine Lösung bietet halt einfach einen zusätzlichen Schutz, weil der Server über zuviele Kontaktanfragen in zu kurzer Zeit nicht mehr ins Schwitzen gebracht werden kann: http://de.wikipedia.org/wiki/Denial_of_Service
Aus derartigen Schutzüberlegungen heraus hat ja auch cback in seinen CrackerTracker einen Floodschutz für Neuregistrierungen und für die Suchfunktion eingebaut.
Stell Dir mal vor, jemandem gelingt es, das Captcha in der neuesten Version des Mods zu überlisten und er schickt Dir scriptgesteuert über Nacht alle paar Sekunden eine mehrere kb große Kontaktanfrage. Selbst wenn der Server das wegsteckt, hast Du am nächsten Morgen eine nette Überraschung...
LG, IPB_Flüchtling
-
- Mitglied
- Beiträge: 352
- Registriert: 13.10.2005 22:18
- Wohnort: Dortmund
Hi IPB_Flüchtling
Morgen mal verbasteln.
Ich sag schonmal danke für die Mühe
Wie mache ich das denn ?
Und ich habe das Contact Formular 3x eingebaut muß ich den Eintrag hier drüber auch 3x machen ? 
Gruß
Dietmar
Morgen mal verbasteln.
Ich sag schonmal danke für die Mühe
Wie mache ich das denn ?
Code: Alles auswählen
INSERT INTO phpbb_cracktrack (name, secval) VALUES ('lastcontact', '0');

Gruß
Dietmar
-
- Mitglied
- Beiträge: 1862
- Registriert: 23.12.2004 22:46
Hallo Dietmar,
zum Ausführen der SQL-Anweisung muss bereits der CrackerTracker installiert sein - wenn Du das nicht hast, müsstest Du stattdessen eine eigene Tabelle in die Datenbank einfügen. (Ich habe auf die CrackerTracker-Tabelle zurückgegriffen, weil mein Flooding-Schutz für das Mailformular ja ebenfalls auf der Schutzroutine des CrackerTracker basiert. Falls Du den CrackerTracker nicht installiert hast und auch nicht installieren willst, lasse es mich wissen. Ich glaube, ich bekomme es hin, auch eine ganze Tabelle in die Datenbank einzufügen.)
Also, um folgende Zeile ausführen zu lassen, vorausgesetzt Du hast den CrackerTracker installiert (vorher ein Datenbank-Backup anfertigen!), öffnest Du phpMyAdmin, wählst Deine phpbb-Datenbank auf, klickst auf "SQL", gibst die Zeile in das Eingabefeld ein und klickst auf "Go" bzw. "ok". Das war es schon. Mehr zum Umgang mit phpMyAdmin findest Du hier: http://www.phpbb.de/doku/kb/artikel.php?artikel=122
Schönen Tag!
IPB_Flüchtling
zum Ausführen der SQL-Anweisung muss bereits der CrackerTracker installiert sein - wenn Du das nicht hast, müsstest Du stattdessen eine eigene Tabelle in die Datenbank einfügen. (Ich habe auf die CrackerTracker-Tabelle zurückgegriffen, weil mein Flooding-Schutz für das Mailformular ja ebenfalls auf der Schutzroutine des CrackerTracker basiert. Falls Du den CrackerTracker nicht installiert hast und auch nicht installieren willst, lasse es mich wissen. Ich glaube, ich bekomme es hin, auch eine ganze Tabelle in die Datenbank einzufügen.)
Also, um folgende Zeile ausführen zu lassen, vorausgesetzt Du hast den CrackerTracker installiert (vorher ein Datenbank-Backup anfertigen!), öffnest Du phpMyAdmin, wählst Deine phpbb-Datenbank auf, klickst auf "SQL", gibst die Zeile in das Eingabefeld ein und klickst auf "Go" bzw. "ok". Das war es schon. Mehr zum Umgang mit phpMyAdmin findest Du hier: http://www.phpbb.de/doku/kb/artikel.php?artikel=122
Was meinst Du jetzt genau damit? Wenn Du 1 phpbb-Board hast und ein und dasselbe Kontaktformular an 3 verschiedenen Stellen aufrufst, brauchst Du die Zeile nur einmal eingeben. Wenn Du aber drei verschiedene Boards in unterschiedlichen Ordnern hast, musst Du die Zeile für jede der drei Datenbanken eingeben - dann wechselst Du via phpMyAdmin zwischen den Datenbanken. Bitte um nähere Auskünfte.snakepilsken hat geschrieben:Und ich habe das Contact Formular 3x eingebaut muß ich den Eintrag hier drüber auch 3x machen?
Schönen Tag!
IPB_Flüchtling
-
- Mitglied
- Beiträge: 352
- Registriert: 13.10.2005 22:18
- Wohnort: Dortmund
Hi IPB_Flüchtling,
der Cracker tracker ist installiert.
Aber da man ja bei jeder Anfrage diesen 5-stelligen Code eingeben muß
und dieser jedes Mal anders ist, kann doch sowas nciht passieren oder ?
Ich habe das Kontaktformular für 3 unterschiedliche Zwecke auf einem Board im Einsatz.
Ich habe die Abfragen jeweils umformuliert und alle Dateien 3x
In der Art etwa
contact_form.php
contact_form2.php
contact_form3.php
Gruß Dietmar
der Cracker tracker ist installiert.
Aber da man ja bei jeder Anfrage diesen 5-stelligen Code eingeben muß
und dieser jedes Mal anders ist, kann doch sowas nciht passieren oder ?
Code: Alles auswählen
Stell Dir mal vor, jemandem gelingt es, das Captcha in der neuesten Version des Mods zu überlisten und er schickt Dir scriptgesteuert über Nacht alle paar Sekunden eine mehrere kb große Kontaktanfrage. Selbst wenn der Server das wegsteckt, hast Du am nächsten Morgen eine nette Überraschung...
Ich habe das Kontaktformular für 3 unterschiedliche Zwecke auf einem Board im Einsatz.
Ich habe die Abfragen jeweils umformuliert und alle Dateien 3x
In der Art etwa
contact_form.php
contact_form2.php
contact_form3.php
Gruß Dietmar