honeypot

Einen DSGVO-konformen Spamschutz kann man in Form eines Honeypots umsetzen. "Ohne Javascript" (in der Überschrift dieses Beitrages) heißt hier jedoch nicht, dass wir hier eine serverseitige Umsetzung vorstellen (<?php IF Honeypotfeld ausgefüllt THEN nicht absenden ?>), sondern wir berücksichtigen hier, dass Bots das Formular auch gerne ohne Javascript besuchen und damit eine clientseitige Umsetzung via Javascript (<script>"IF Honeypotfeld ausgefüllt THEN nicht absenden"</script>) umgehen.

 

 

 

 

Was heißt "Honeypot" in diesem Zusammenhang eigentlich? Wir lenken die Bots im Grunde von den für das Absenden des Formulars relevanten Feldern ab in Form eines versteckten Formularfeldes. Füllt er dieses aus, so kann das Formular nicht abgesendet werden.

 

Ein Beispiel könnte sein:

 

<div class="field required" style="height:0; overflow:hidden;">
   <label for="notiz" class="label"><span><?= $escaper->escapeHtml(__('Notiz')) ?></span></label>
   <div class="control">
      <input type="text"
         name="notiz"
         id="notiz">
   </div>
</div>

 

mit der Abfrage in Javascript (Kontext: Magento 2 Onlineshop)

 

require(['jquery'], function($){
   $('form').submit(function (evt) {
   if($('#notiz').val()!=""){
      evt.preventDefault();
   }
});

 

Nun soll das Formular jedoch auch dann nicht abgeschickt werden, wenn der Bot Javascript deaktiviert hat. Den Submit-Button zu deaktivieren hilft nichts, diesen benötigt man nicht zum Absenden. Besser ist es hier, das Ziel des Formulars zu verschleiern, in dem man z.B. das action-Attribut des Formularelements leer lässt und dieses über ein Hilfsattribut, z.B. mit "data-action" via Javascript beffüllt:

 

<script>
   require(['jquery'], function($){
      $(document ).ready(function (evt) {
      $('#form-validate').attr("action", $('#form-validate').attr('data-action'));
      $('#form-validate').removeAttr('data-action');
      });
   });

</script>

 

So schützt die Methode DSGVO-konform vor (Bot-)Spam. Gesehen in unserer Web-Agentur in einem Magento 2-Onlineshop.