captcha/honeypot, dsgvo konform ohne cookie,

  • Joomla Version
    4.xx
    PHP Version
    PHP 8.1.x
    Hoster
    #

    Hallo zusammen

    Früher hatte ich immer recaptcha von Google verwendet. Da dies aber einige dsgvo Probleme machen kann, habe ich selbst ein captcha programmiert.

    Dieses stelle ich natürlich gerne zur Verfügung.


    GitHub - Jumbo125/Joomla-Captcha_Plugin: Joomla Captcha_Plugin
    Joomla Captcha_Plugin. Contribute to Jumbo125/Joomla-Captcha_Plugin development by creating an account on GitHub.
    github.com
    • Dynamisch generiertes Honeypot-Feld
    • SHA-256 Token-Überprüfung
    • Zeitprüfung: Absenden < 3 Sekunden = Bot
    • Funktioniert mit AJAX-Formularen
    • Keine externen Dienste (Google etc.)
    • DSGVO-konform & Open Source

    Liebe Grüße

    Jumbo125

  • Danke jumbo125 ,

    Funktioniert dieses Plugin auch native?

    Was meinst du genau?


    Plugin installieren, zwei geheimschlüssel eingeben, frei nach Wahl. Es muss lediglich ein js code eingefügt werden, welcher die entsprechenden Felder automatisch ins form einfügt.

    Der Code steht exakt in der Beschreibung und muss nur mittels copy and paste eingefügt werden


    Liebe Grüße

  • jumbo125 Joomla hat einen eigenen Plugin-Typ für Captchas, damit kann man das Rendering der Felder sowie die Prüfung abstrakt im Plugin als Methoden bereitstellen und hat damit eine einheitliche Schnittstelle, auf die Erweiterungsentwickler zurückgreifen können. Simples Beispiel: https://github.com/pe7er/hCaptcha…a4/hcaptcha.php

    Deine Copy&Paste Variante ist "unüblich" - und im Kontext von Core und Dritterweiterungen auch schlicht unpraktikabel, weil dein Custom Code bei jedem Update überschrieben wird.

  • SniperSister

    Zu begin habe ich ein captcha plugin gemacht.

    Das konnte ich auch als Standard setzen.

    Aber ich nutze ein Formular plugin, welches leider nicht das standard captcha verwendet. Da kann ich nur zwischen recaptcha und Formular Komponenten "eigenen" captcha wählen


    Recaptcha möchte ich nicht und das eigene captcha ist eher schlecht.

    Daher die Lösung mittels js....

    Hast du eine idee, daher als system plugin

    Danke

  • Aber ich werde es noch umprogrammieren, dass beim laden des plugins automatisch der js-code ausgeführt wird.
    man kann in den settings einstellen, ob der js code automatisch geladen wird.

    zusätzlich wird er noch erweitert, dass forms mit der klasse: no-honeypot keine captcha prüfung erhalten, da jeder ajax request sonst davon betroffen ist.


    Dadurch wird es stabil, auch bei etwaigen updates

  • Absofort gibt es ein Kontrollkästchen.
    Beim aktivieren, wird der captcha in jedes form automatisch enigefügt. Auch in forms, welche nicht den standard captcha von joomla nutzen können.

    Nicht eingefügt wird es in Forms welche die klasse "no-honeypot" enthalten

    Dies wäre wichtig, für formulare wie datepicker usw.


    GitHub - Jumbo125/Joomla-Captcha_Plugin at V_2
    Joomla Captcha_Plugin. Contribute to Jumbo125/Joomla-Captcha_Plugin development by creating an account on GitHub.
    github.com
  • Die automatische Injection machst du auf JS-Basis, was den Zweck des Plugins ein gutes Stück weit ad absurdum führt: Bots führen in der Regel aus performancegründen kein JS aus, somit wird kein Feld injected und erst recht auch nicht befüllt - dein Honeypot greift also nie.

    Fast korrekt....
    Und hier ist ein entscheidender Punkt.

    JEDE Anfrage, welche kein JS ausführt wird als verdächtigt angesehen.

    Das ist ABSICHTLICH so.
    Denn wie du bereits erwähnt hast, führen 95% aller Bots kein JS aus. Es seidem es sind extrem "gute" bots welche selenium oder ähnliches nutzen.

    Prinzip:

    Das Plugin prüft serverseitig – mittels PHP – ob die erwarteten Honeypot-Felder im Formular vorhanden und korrekt ausgefüllt sind.
    Diese Felder werden dynamisch per JavaScript eingefügt, sodass sie für Bots unsichtbar und schwer reproduzierbar sind.

    Um automatisierte Angriffe weiter zu erschweren, werden:

    • die Feldnamen dynamisch und geheim generiert (mit Präfix + Zufallswert),
    • der erwartete Token-Wert gehasht und an den Feldnamen gekoppelt,
    • zusätzlich ein Zeitstempel eingebaut, um „instant“-Submits zu erkennen.

    ➡️ Wird kein JavaScript ausgeführt, fehlen diese Felder komplett –
    das Plugin erkennt die Anfrage dadurch als verdächtig und blockiert sie (sofern aktiviert).

    Zu dem Thema:

    aber was ist mit den usern, welche JS im Browser deaktiviert haben:

    Laut W3Techs und anderen Quellen:

    • JavaScript ist bei über 99,4 % der aktiven Web-Nutzer aktiviert
    • Nur etwa 0,6 % oder weniger haben JS deaktiviert
    • Und davon ist ein großer Teil Crawler, Scraper oder Bots

    Bei 10.000 Besuchern:

    Etwa 60 von 10.000 Besuchern haben JavaScript deaktiviert.
    Der Großteil davon sind Bots, Crawler oder technische Spezialfälle – kaum echte Menschen.
    Wenn dein Formular also bei deaktiviertem JS blockiert wird, riskierst du vielleicht 1 von 10.000 echten Anfragen – wenn überhaupt.

    Ich denke das ist vertretbar.


    Falls ich falsch liege, bin ich natürlich über jede Kritik dankbar.

    LG jumbo