Robot legt Artikel in den Warenkorb - Bug?

ich beobachte schon seit einiger Zeit, dass ein robot Artikel per get-Parameter in den Warenkorb legt. Hier der Auszug aus der oxlogs

aus der Server-Logdatei verwendet er folgenden Link:

208.115.113.86 - - [22/Mar/2013:09:51:26 +0100] "GET /shop/Taschenzubehoer/Gurtverschluss-schwarz-3-0-cm-Kunststoff.html?listtype=list&fnc=tobasket&aid=84kgvu4th8sc8wkkowos8k4ss&am=1 HTTP/1.1" 200 - www.meineWebseite.de "-" "Mozilla/5.0 (compatible; Ezooms/1.0; [email protected])" "-"  

Wenn das publik wird räumt der mir den Laden leer - wenn er es auch nur bezahlen würde :confused:

Ist das nicht ein massiver Bug?

Hi,

jetzt hattest Du mir kurz einen Mordsschrecken eingejagt :slight_smile:

Nein, kein massiver Bug, Dir räumt auch niemand die Bude aus. Die aid’s werden in hidden fields per HTML übergeben, können ausgelesen werden und mit der tobasket-function benutzt werden. Das wird dafür benötigt, um bereits ohne Anmeldung Produkte in den Warenkorb legen zu können. Einige benutzen auch ein alternatives Frontend (z.B. Flash) und rufen diese Funktion auf.

Natürlich ist das nicht für einen Bot gedacht :wink:
Du kannst über die Private-Sales-Einstellungen im Admin steuern, wie der Inhalt des Warenkorbes behandelt werden soll, z.B. ob er nach einiger Zeit wieder verfällt. Insofern kann nicht das Lager einfach so leergekauft werden. Bei einem solchen Bot besteht natürlich immer die Gefahr, dass die Datenbank vollgemüllt wird. Ich würde den einfach über die .htaccess sperren:

Gruß

Hi Marco, entschuldige wenn ich dich erschrocken habe :slight_smile:
So ganz wohl ist mir bei der Geschichte nicht! Ich weiß im Moment auch noch nicht welche anderen Möglichkeiten es noch über die Get-Parameter gibt …
Habe aber erst mal diese Option mit einer Ergänzung in der oxconfig.php abgeschaltet.

Hi,

dies liegt zwar nicht an dem Formularfeld zum Absenden des Artikel in den Warenkorb Button, sondern an den Links “In den Warenkorb” bei den Crosssellern (Kunden, die diesen Artikel gekauft haben, kauften auch), jedoch macht dies in diesem Fall keinen Unterschied.

Normalerweise sollte dieser Link von einem Bot nicht aufgerufen werden, da in der robots.txt dieser als Disallow gekennzeichnet ist.

Disallow: /*&fnc=tobasket

Der Ezooms scheint sich aber für diesen Eintrag nicht zu interessieren, bzw. ignoriert diesen einfach. Du könntest versuchen, diesen Bot mithilfe des Eintrags

User-agent: Ezooms
Disallow: /

in der robots.txt komplett auszuschließen.

Viele Grüße
Benny

die Zeile “Disallow: /*&fnc=tobasket” steht schon in der robots.txt, aber - wie Du schon geschrieben hast - interessiert das ezooms (und auch andere ) überhaupt nicht. Weitere Einträge in der robots.txt sind dann damit auch wenig hilfreich.

Ich habe das erst mal in der oxconfig.php in der Funktion getParameter() abgeschaltet:


...
        if ( isset( $_POST[$sName] ) ) {
            $sValue = $_POST[$sName];
        } elseif ( isset( $_GET[$sName] ) ) {
	 if ($_GET[$sName] != 'tobasket') {
            $sValue = $_GET[$sName];
	 }
        }
...

Aber das kann doch nicht die Lösung sein…
Jetzt ist es nicht mehr möglich Artikel bei “Kunden, die diesen Artikel gekauft haben, kauften auch:” in den Warenkorb zu legen.
Du könntest aber über die .htaccess die IP des Bots aussperren.

Du hast recht: bei den Links "… kauften auch " ging der Warenkorb-Button nicht mehr. Habe den Button kurzerhand geändert in “mehr Infos” - Danke!
Hier wäre es kein grosser Aufwand ein Formular einzubauen und die Parameter per POST zu übertragen … (gehört das in den Bug-Tracker?)
Bot-IPs auf irgendeine Art auszusperren ist eine ‘never ending story’ und wird nicht funktionieren.