Ergebnis 1 bis 19 von 19

Thema: [honeypotForm] Bot-Anmeldungen zum Newsletter vermeiden

  1. #1
    Contao-Nutzer Avatar von ray
    Registriert seit
    10.07.2009.
    Ort
    Düsseldorf
    Beiträge
    61

    Standard [honeypotForm] Bot-Anmeldungen zum Newsletter vermeiden

    Hallo zusammen,

    ich hab das Problem, dass sich ein oder mehrere Bots bei meinem Newsletteranmeldeformular mit ausgedachten E-Mail Adressen (z.B. 019111125 @ gawab.com) anmelden.
    Das wäre nicht weiter schlimm, wenn ich nicht eine Rückmeldung des Mailer Daemon bekommen würde, für jede nicht existierende Adresse.

    Wie kann man sich leicht davor schützen, ohne dem Besucher mehr Aufwand zu machen?
    Vielleicht durch die Erweiterung honeypotForm. Hat damit jemand Erfahrung? Würde das funktionieren?

    Wenn ich dies in einem Kontaktformular teste, bekomme ich ein unsichtbares Feld hinzugefügt
    HTML-Code:
    <input id="ctrl_28" class="honeypotform" type="text" value="" name="email_hp_name">
    Mit einer CSS Anweisung im head
    HTML-Code:
    .honeypotform{
    display: none;
    }
    Mehr finde ich aber nicht. Wie checkt er denn jetzt, ob das Feld ausgefüllt ist oder nicht?
    Warum frage ich? Weil ich die Funktion gerne händisch im Template nl_default einbauen möchte.

    Konkret geht es um diese Seite: http://www.siegen-shamrock.de

    Kann jemand helfen?
    Vielen Dank schonmal.

  2. #2
    Contao-Urgestein Avatar von do_while
    Registriert seit
    15.06.2009.
    Ort
    Berlin | Deutschland
    Beiträge
    3.614
    Partner-ID
    1081
    User beschenken
    Wunschliste
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Hallo ray,

    ich setze die Erweiterung gern ein, denn dann kann ich die Sicherheitsfrage weglassen, die viele Kunden nicht in ihren Formularen haben wollen. Bisher ist mir nicht aufgefallen, dass Mails von Spambots durchkommen. Natürlich ist das kein Schutz vor manuellen Spameinträgen, da hilft aber die Sicherheitsfrage auch nicht.

    Wie das ganze funktioniert, kann ich Dir auch nicht sagen, dazu müßte man den Quellcode mal ein wenig studieren.

  3. #3
    Wandelndes Contao-Lexikon Avatar von BugBuster
    Registriert seit
    15.06.2009.
    Ort
    Berlin
    Beiträge
    10.513
    User beschenken
    Wunschliste

    Standard

    Das Teil generiert ein Input Feld und macht es unsichtbar.
    Dann hat er sich in den Hook validateFormField eingeklinkt (config.php) und überprüft sein eigenes Feld (honeypotForm) darauf ob es ausgefüllt ist. (honeypotForm.php - checkSecureForm)

    So simple wie genial.
    Grüße, BugBuster
    "view source" is your guide.
    Danke an alle Amazon Wunschlisten Erfüller

  4. #4
    Contao-Nutzer Avatar von ray
    Registriert seit
    10.07.2009.
    Ort
    Düsseldorf
    Beiträge
    61

    Standard

    Ok cool, danke soweit. Ich mag den Gedanken, das Captcha umgehen zu können und trotzdem Spamfrei zu bleiben. Allerdings tue ich mich schwer damit einen Anfang zu finden.

    Das ist meine nl_default.xhtml:
    HTML-Code:
    <!-- indexer::stop -->
    <div class="<?php echo $this->class; ?> block"<?php echo $this->cssID; ?><?php if ($this->style): ?> style="<?php echo $this->style; ?>"<?php endif; ?>>
    <?php if ($this->headline): ?>
    
    <<?php echo $this->hl; ?>><?php echo $this->headline; ?></<?php echo $this->hl; ?>>
    <?php endif; ?>
    
    <p class="nl_text">
      Wir halten Dich stets auf dem Laufenden. Hierfür benötigen wir nur Deine E-Mail-Adresse:
    </p>
      
    <form action="<?php echo $this->action; ?>" id="<?php echo $this->formId; ?>" method="post">
    <div class="formbody">
    <?php if ($this->message): ?>
    <p class="<?php echo $this->mclass; ?>"><?php echo $this->message; ?></p>
    <?php endif; ?>
    <input type="hidden" name="FORM_SUBMIT" value="<?php echo $this->formId; ?>" />
    <input type="hidden" name="REQUEST_TOKEN" value="{{request_token}}" />
    <?php if (!$this->showChannels): ?>
    <?php foreach ($this->channels as $id=>$title): ?>
    <input type="hidden" name="channels[]" value="<?php echo $id; ?>" />
    <?php endforeach; ?>
    <?php endif; ?>
    <label for="ctrl_email_<?php echo $this->id; ?>" class="invisible"><?php echo $this->emailLabel; ?></label>
    <input type="text" name="email" id="ctrl_email_<?php echo $this->id; ?>" class="text" value="<?php echo $this->email; ?>" />
    <?php if ($this->showChannels): ?>
    <label for="ctrl_channels_<?php echo $this->id; ?>" class="invisible"><?php echo $this->channelsLabel; ?></label>
    <div id="ctrl_channels_<?php echo $this->id; ?>" class="checkbox_container">
    <?php foreach ($this->channels as $id=>$title): ?>
    <span><input type="checkbox" name="channels[]" id="opt_<?php echo $this->id; ?>_<?php echo $id; ?>" value="<?php echo $id; ?>" class="checkbox" /> <label for="opt_<?php echo $this->id; ?>_<?php echo $id; ?>"><?php echo $title; ?></label></span>
    <?php endforeach; ?>
    </div>
    <?php endif; ?>
    <input type="image" name="submit" class="submit" value="<?php echo $this->submit; ?>" src="tl_files/layout/shamrock2.png" title="Newsletter abonnieren" />
    </div>
    
    <p class="nl_text">
      Du kannst den Newsletter jederzeit über den Link in der Mail oder <a href="{{link_url::16}}">hier abbestellen</a>.
    </p>
    
    </form>
    <?php if ($this->hasError): ?>
    
    <script type="text/javascript">
    /* <![CDATA[ */
    try {
      window.scrollTo(null, ($('<?php echo $this->formId; ?>').getElement('p.error').getPosition().y - 20));
    } catch(e) {}
    /* ]]> */
    </script>
    <?php endif; ?>
    
    </div>
    <!-- indexer::continue -->
    Das ist die honeypotform.tpl:
    HTML-Code:
    <?php if (!$this->tableless): ?>
      <tr class="<?php echo $this->rowClass; ?>">
        <td class="col_0 col_first"><?php echo $this->generateLabel(); ?><?php if ($this->mandatory): ?><span class="mandatory">*</span><?php endif; ?></td>
        <td class="col_1 col_last"><?php echo $this->generateWithError(); ?></td>
      </tr>
    <?php else: ?>
      <?php echo $this->generateLabel(); ?> 
      <?php echo $this->generateWithError(); ?>
    <?php endif; ?>
    Die honeypotform.tpl einfach in die nl_default zu integrieren macht ja keinen Sinn. Wie gehe ich also vor, wenn ich ein Modul in ein Template integrieren möchte? Ich verstehe nicht ganz wie ein Modul überhaupt aufgerufen oder initialisiert wird. Muss dazu in diesem Fall die honeypotForm.php eingebunden werden?

  5. #5
    Wandelndes Contao-Lexikon Avatar von BugBuster
    Registriert seit
    15.06.2009.
    Ort
    Berlin
    Beiträge
    10.513
    User beschenken
    Wunschliste

    Standard

    Hmm, du bräuchtest nur diese Zeile mit in deinem Formular einbauen
    PHP-Code:
    <input id="ctrl_28" class="honeypotform" type="text" value="" name="email_hp_name"
    und mittels css verstecken
    Code:
    .honeypotform{
    display: none;
    }
    In der Input Zeile darfst du alles anpassen nur die class muss so lauten, nach der sucht das Modul per Hook sein Feld um es zu überprüfen.
    (und das css natürlich auch)

    Am besten nach der Request Token Zeile. Die "id=" Angabe würde ich rausnehmen, die wird ja normalerweise automatisch generiert, nicht das es da zu Dopplungen kommt.
    Also in etwa so: (für xhtml angepasst)
    PHP-Code:
    <input type="hidden" name="REQUEST_TOKEN" value="{{request_token}}" />
    <
    input class="honeypotform" type="text" value="" name="email_hp_name" /> 
    oder ganz perfekt, doch mit id wie die anderen Felder auch:
    PHP-Code:
    <input type="hidden" name="REQUEST_TOKEN" value="{{request_token}}" />
    <input id="email_hp_name_<?php echo $this->id?>" class="honeypotform" type="text" value="" name="email_hp_name" />
    Geändert von BugBuster (14.08.2012 um 09:56 Uhr)
    Grüße, BugBuster
    "view source" is your guide.
    Danke an alle Amazon Wunschlisten Erfüller

  6. #6
    Contao-Nutzer Avatar von ray
    Registriert seit
    10.07.2009.
    Ort
    Düsseldorf
    Beiträge
    61

    Standard

    Ok, jetzt hab ich's auch mit dem Hook gecheckt. Ich danke dir, BugBuster! ♥

    Warum wird dieses Verfahren eigentlich nicht in Contao als alternative Barriere angeboten? Gibt es Nachteile vom Honeypot?
    Geändert von ray (28.06.2012 um 10:02 Uhr)

  7. #7
    Contao-Nutzer
    Registriert seit
    17.04.2012.
    Ort
    Deutschland / Bulgarien
    Beiträge
    131

    Standard

    Hey Leute,

    funktioniert honeypotForm mit Contao 2.11.x?

    Grüße
    Anguel

  8. #8
    Contao-Nutzer
    Registriert seit
    17.04.2012.
    Ort
    Deutschland / Bulgarien
    Beiträge
    131

    Standard

    Funktioniert nicht. Template ist noch .tpl
    .xhtml und html5 fehlen

  9. #9
    Wandelndes Contao-Lexikon Avatar von BugBuster
    Registriert seit
    15.06.2009.
    Ort
    Berlin
    Beiträge
    10.513
    User beschenken
    Wunschliste

    Standard

    na dann legt 2 kopien an, macht eine Systemwartung und probiert es nochmal.
    Grüße, BugBuster
    "view source" is your guide.
    Danke an alle Amazon Wunschlisten Erfüller

  10. #10
    Contao-Nutzer
    Registriert seit
    17.04.2012.
    Ort
    Deutschland / Bulgarien
    Beiträge
    131

    Standard

    Zitat Zitat von BugBuster Beitrag anzeigen
    na dann legt 2 kopien an, macht eine Systemwartung und probiert es nochmal.
    Hab ich grade gemacht, scheint zu funktionieren :-)
    Werde mal den Ersteller um ein Update bitten.
    Geändert von Anguel (14.08.2012 um 11:39 Uhr)

  11. #11
    Contao-Nutzer Avatar von eBlick
    Registriert seit
    01.04.2012.
    Ort
    Stuttgart
    Beiträge
    139
    User beschenken
    Wunschliste

    Standard Honeypot für Contao 3

    Zitat Zitat von BugBuster Beitrag anzeigen
    na dann legt 2 kopien an, macht eine Systemwartung und probiert es nochmal.
    Hallo Bugbuster.
    Ich würde gerne dieses Thema nochmals aufgreifen, weil mir der Honeypot Gedanke grundsätzlich gefällt.
    Ich würde Honeypot gerne in Contao 3 einsetzen aber in Kombination mit EFG funktioniert es nicht (script läuft nicht durch).
    Kannst du das mit den 2 Kopien kurz erläutern und weißt du, ob es für Contao 3 auch geht?

    Danke und Grüße
    Thomas

  12. #12
    Wandelndes Contao-Lexikon Avatar von BugBuster
    Registriert seit
    15.06.2009.
    Ort
    Berlin
    Beiträge
    10.513
    User beschenken
    Wunschliste

    Standard

    Du nimmst die Datei honeypotform.tpl und legst zwei Kopien an, als honeypotform.xhtml und honeypotform.html5

    Für Contao 3:
    - autoload generieren für honeypotForm (Backend unten links)
    Sollte reichen.
    Falls die css nicht geladen wird, hab jetzt nicht geschaut wie er die einbindet, dann
    - im Verzeichnis system/modules/honeypotForm eine Datei anlegen .htaccess mit Inhalt
    order deny,allow
    allow from all
    Grüße, BugBuster
    "view source" is your guide.
    Danke an alle Amazon Wunschlisten Erfüller

  13. #13
    Contao-Fan Avatar von comanche
    Registriert seit
    12.11.2009.
    Beiträge
    496

    Standard

    Zitat Zitat von BugBuster Beitrag anzeigen

    Für Contao 3:
    - autoload generieren für honeypotForm (Backend unten links)
    Sollte reichen.
    Hm, bei mir zeigt es beim Speichern einen Scriptfehler an, sobald ich ein Honeypot Element im Formular anlege. Also doch die xhtml- und html5-Templates anlegen oder ist das unabhängig davon?

    Grüße,
    Andreas

  14. #14
    Wandelndes Contao-Lexikon Avatar von BugBuster
    Registriert seit
    15.06.2009.
    Ort
    Berlin
    Beiträge
    10.513
    User beschenken
    Wunschliste

    Standard

    Die xhtml und html5 Templates brauchst du ab Contao 2.10 glaube ich, also auch für Contao 3.
    Grüße, BugBuster
    "view source" is your guide.
    Danke an alle Amazon Wunschlisten Erfüller

  15. #15
    Alter Contao-Hase
    Registriert seit
    28.09.2010.
    Beiträge
    1.368

    Standard

    Gibt es auch schon eine Lösung für die Contao 3 Version?


    mark

  16. #16
    Contao-Nutzer
    Registriert seit
    23.09.2009.
    Beiträge
    23

    Standard

    Zitat Zitat von BugBuster Beitrag anzeigen
    Hmm, du bräuchtest nur diese Zeile mit in deinem Formular einbauen
    PHP-Code:
    <input id="ctrl_28" class="honeypotform" type="text" value="" name="email_hp_name"
    und mittels css verstecken
    Code:
    .honeypotform{
    display: none;
    }
    In der Input Zeile darfst du alles anpassen nur die class muss so lauten, nach der sucht das Modul per Hook sein Feld um es zu überprüfen.
    (und das css natürlich auch)
    Hallo, contao 2.11, es funktioniert auf normalen Formularen.

    ich habe nun auch das nl_default.html5 angepasst und die Zeile mit class="honeypotform" ist da, nur wird das checkSecureForm(...) in honeypotForm.php nicht aufgerufen. wie kann ich honeypot für das Newsletter Abonnieren Modul den registrieren?

    anscheinend wir der hook $GLOBALS['TL_HOOKS']['validateFormField'][] = array('honeypotForm', 'checkSecureForm'); nicht getriggert. Eine Idee wie man das macht?

    LG
    Geändert von maxschaf (05.11.2013 um 12:44 Uhr)

  17. #17
    Contao-Fan Avatar von Nikolas
    Registriert seit
    22.08.2009.
    Ort
    Lehe
    Beiträge
    493
    User beschenken
    Wunschliste

    Standard

    Zitat Zitat von maxschaf Beitrag anzeigen
    Hallo, contao 2.11, es funktioniert auf normalen Formularen.

    ich habe nun auch das nl_default.html5 angepasst und die Zeile mit class="honeypotform" ist da, nur wird das checkSecureForm(...) in honeypotForm.php nicht aufgerufen. wie kann ich honeypot für das Newsletter Abonnieren Modul den registrieren?

    anscheinend wir der hook $GLOBALS['TL_HOOKS']['validateFormField'][] = array('honeypotForm', 'checkSecureForm'); nicht getriggert. Eine Idee wie man das macht?

    LG
    Hat hier schon jemand eine Lösung? Der Hook wird tatsächlich wohl nicht getriggert. Hat jemand einen Workaround (C3)?

    Gruß
    Nikolas

  18. #18
    Wandelndes Contao-Lexikon Avatar von BugBuster
    Registriert seit
    15.06.2009.
    Ort
    Berlin
    Beiträge
    10.513
    User beschenken
    Wunschliste

    Standard

    also als erstes würde ich nach Installieren der Erweiterung übers Backend die autoload.php generieren lassen für diese Erweiterung.
    Vorher geht die sowie so nicht, denn es wird die Klasse nicht gefunden. Wenn man die Fehlermeldungen einschaltet inkl. log Datei, sollte auch eine entsprechende Meldung kommen.
    Und wie weiter oben schon beschrieben, ihr müsst das tpl Template in ein xhtml bzw. html5 Template wandeln.

    Und dann sollte das schon laufen.
    Grüße, BugBuster
    "view source" is your guide.
    Danke an alle Amazon Wunschlisten Erfüller

  19. #19
    Contao-Fan Avatar von Nikolas
    Registriert seit
    22.08.2009.
    Ort
    Lehe
    Beiträge
    493
    User beschenken
    Wunschliste

    Standard

    Zitat Zitat von BugBuster Beitrag anzeigen
    also als erstes würde ich nach Installieren der Erweiterung übers Backend die autoload.php generieren lassen für diese Erweiterung.
    Vorher geht die sowie so nicht, denn es wird die Klasse nicht gefunden. Wenn man die Fehlermeldungen einschaltet inkl. log Datei, sollte auch eine entsprechende Meldung kommen.
    Und wie weiter oben schon beschrieben, ihr müsst das tpl Template in ein xhtml bzw. html5 Template wandeln.

    Und dann sollte das schon laufen.
    Naja, alles schon so gemacht. Funktionierte auch bei normalen Formularen aus dem Formulargenerator.

    Allerdings wurde die Prüfung nicht bei der Newsletteranmeldung ausgeführt.
    Ich habe die Prüfung für den Newsletter nun in eine Mini-Erweiterung ausgelagert - der Kunde konnte nicht warten

    Gruß
    Nikolas

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

Lesezeichen

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •