Problembeschreibung

Sie betreiben z.B. VirtueMart in Joomla. Die Nutzer registrieren sich per Shop-Checkout. Die Joomla-Registrierung wird über keinen Menüpunkt angeboten, ist also eigentlich deaktiviert. Trotzdem gelingt es Spam-Bots sich zu registieren.

Technischer Hintergrund

Dass den Spam-Bots dies gelingt, ist zunächst mal einfach erklärt:

Wenn ein Joomla-Projekt keine Registrierung anbieten will, dann ist es sicher ein einfacher Weg, dieses gar nicht als Menüeintrag anzubieten. Wer sicher aber in Joomla etwas auskennt, und Hackern fällt es nicht schwer die Joomla-Internas zu durchschauen, kennte den URL, über die die Joomla-Registrierung als Seite angezeigt werden kann. Diese sieht so aus:

ihre-domain/index.php?option=com_user&view=register

Damit gelingt es also recht einfach sich trotzdem in Joomla zu registrieren und der Spammer erreicht zumindest, dass seine Spamnachricht in Ihrem Mailkonto landet. Schlimmstenfalls erhalten Sie regelmäßig solche Registrierungen und die Benutzerverwaltung in Joomla wird vollgemüllt. Außerdem bieten solche Benutzer immer auch einen weiteren potentiellen Angriffspunkt, weshalb das verhindert werden sollte.



Was kann man dagegen tun?

Sollten Sie ein ganz einfaches J!-Projekt haben, wo eine Registrierung in keiner Weise gewünscht ist, dann kann man einfach die Registrierungsfunktion abschalten. In Joomla 1.5 gibt es dazu in der Konfiguration eine System-Option "Benutzerregistrierung erlauben". Diese wird deaktiviert und schon haben Sie Ruhe (Leider funktioniert auch das nicht immer zuverlässig und endgültig).

Wenn Sie jedoch die Nutzerregistrierungen benötigen oder eine Shop-Registrierung zwingend ist, dann ist Lösung nicht anwendbar. Auch wenn der Webshop seine eigene Registrierungsseite nutzt, prüft VirtueMart ob die Registrierung erlaubt. Man erhält dann eine Warnmeldung beim Versuch des Checkouts.

Also muss nach anderen Lösungen gesucht werden, von denen ich hier denkbare benennen will. In jedem Fall gehe ich davon aus, dass eine Shopregistrierung möglich sein soll, aber keine Registrierung über das Joomla-Registrierungsformular.

  1. Über verfügbare Plugins kann man in das Registrierungsformular CAPTCHA-Grafiken einbinden.
  2. Alternativ ließen sich auch andere Technologien nutzen, wie z.B. Honey-Pot oder per Zeitfensterschutz. Dazu hatte ich schon mal einen zutreffenden Artikel veröffentlicht jedoch im Zus.hg mit der Formular-Komponten BreezingForms. Das setzt jedoch etwas Programmierkenntnisse in PHP/JavaScript voraus.
  3. Man kann auch das Formular stören z.B. in dem man das zugehörige Template entfernt. Unter components\com_user\views\register\tmpl\ einfach die Datei default.php umbenennen in z.B. default_renamed.php. Damit erhält man einen 500-Fehler. Der saubere Weg ist das nicht, weil diese Fehler natürlich im Error-Log auflaufen. Beachten, dass abhängig vom Template hier evtl. ein Overriding stattfindet. In dem Fall muss dieses Overridescript im Templateverzeichnis ebenfalls umbenannt werden.
  4. Besser wäre einfach das Script so zu manipulieren, dass es nicht mehr sauber arbeiten kann. Jedes Formular in Joomla arbeitet mit einem Sicherheitstoken. Ohne gültigem Token keine Verarbeitung. Also kommentieren wir im Formlar einfach den Hidden-Input-Tag mit dem Token aus. Dazu öffnen wir o.g. default.php (enteder im Joomla-Originalpfad (s.o.) oder im Template-Override-Verzeichnis. Dort gehen man ganz ans Ende des Scriptes und kommentiert die Erzeugung der Formular-Tokenzeile aus: <?php # echo JHTML::_( 'form.token' ); ?>.