Das habe ich seit gestern auch. Das Blöde ist, dass der Shop das nicht abfängt und der Mailempfänger eine Willkommensmail vom Shop mit der SPAM-URL erhält. Hier eine schnelle Lösung:
Ich habe den Vor- und Nachnamen nicht nur auf die Länge sondern zusätzlich noch auf vorkommen von http überprüft:
In den Dateien create_account.php UND create_guest_account.php
suche nach:
if (strlen($firstname) < ENTRY_FIRST_NAME_MIN_LENGTH
) {
ersetzte durch:
if ((strlen($firstname) < ENTRY_FIRST_NAME_MIN_LENGTH
) OR
(preg_match("/http/",$firstname))) {
und suche nach:
if (strlen($lastname) < ENTRY_LAST_NAME_MIN_LENGTH
) {
ersetzte durch:
if ((strlen($lastname) < ENTRY_LAST_NAME_MIN_LENGTH
) OR
(preg_match("/http/",$lastname))) {
Kann sein, dass die Stelle in der Version 1.06SP4 etwas anders aussieht aber wichtig ist, dass jeweils auch nach http gesucht wird.
[EDIT Tomcraft 29.05.2019: Anleitung in Beitrag 1 verlinkt]
Eine noch genauere Prüfung kann man mit untenstehendem Ausdruck hinbekommen. Hierbei werden Web-Adressen mit und ohne http(s) geprüft. Die PHP-eigene Filtermöglichkeit mit filter_var und FILTER_VALIDATE_URL funktioniert leider auch nur bei URLs mit http(s) voran.
Hier der Ausdruck (z. B. für die Prüfung des Nachnamens):
preg_match("!^(http|https)?(://)?(www\.)?([a-z0-9\.-]{3,})\.[a-z]{2,4}(/)?$!i", $lastname) Ich habe zudem gesehen, daß in den genannten Kontoeröffnungen als Vorname immer auch Spam-Text in Form von Beträgen in $ und dergl. angegeben wurde. Hier hilft es auch noch auf unerlaubte Zeichen zu prüfen, z. B.:
!preg_match("#^[a-zA-ZäöüÄÖÜßÈÉÁÀéèà'`´ \.]+$#", $lastname) hierbei sind alle Zeichen von A-Z, Umlauten, Akzenten, Punkt und Leerzeichen erlaubt. Die erlaubten Zeichen können beliebig erweitert werden. Bitte hier auf das "!" vor preg_match achten, da in der Fehlerprüfung ja festgestellt wird, ob Zeichen enthalten sind die den Vorgaben
nicht entsprechen.
Bei der Prüfung sollte man vielleicht dann auch noch den Fehlertext verallgemeinern. Der ist ansonsten immer z. B. "Der Nachname muss aus mindestens xy Zeichen bestehen".