Wie identifiziere ich Nebenstellen, die nach Hause telefonieren?

10

Gibt es eine Möglichkeit, Code zu identifizieren, der im Hintergrund HTTP-Anforderungen an einen Remote-Server sendet?

Ich habe festgestellt, dass das Laden vieler Shops lange dauert, wenn ich auf meinem Entwicklungscomputer nur wenig Empfang habe, selbst wenn sie auf localhost ausgeführt werden.

Ich habe das Gefühl, dass einige Remote-Server aufgrund meiner fleckigen Verbindung lange brauchen, um zu antworten. Ich möchte diese Anforderungen identifizieren und entfernen, da ich befürchte, dass sie auch die Live-Installationen verlangsamen, beispielsweise wenn der externe Server heruntergefahren oder langsam ist ...

Louis B.
quelle
1
Bitte beachten / prüfen Sie, ob Sie diese Anrufe entfernen dürfen. Sie sind wahrscheinlich erlaubt, aber ich habe Fälle gesehen, in denen dies eine der Erweiterungsanforderungen ist.
David Mulder

Antworten:

8

Wir tun dies mit einer Befehlszeilenfunktion (Bash) auf einem beliebigen Webserver im Stapel.

monitor_outbound ()
{
  tcpflow -p -c -i bond0 '( port 80 or port 443 ) and ' $(ip addr list | grep -Eoh "([0-9]{1,3}\.){3}[0-9]+" | sort -u | awk '{print "src host " $1 " or"}' | tr '\n' ' ' | sed -E 's# or $##g') | grep --line-buffered -oE '(GET|POST|HEAD) .* HTTP/1.[01]|Host: .*' | sed --unbuffered "s/^/$(date "+%b %d %T"): /g"
}

Abgesehen davon können Sie die CURL / fopen-Methoden in Magento nutzen (dies setzt jedoch voraus, dass sie sich die Mühe machen, Kernmethoden zu verwenden). In den meisten Fällen werden benutzerdefinierte Module ihre offenen file_get_contents()oder curlMethoden verwenden.

Sie können eine schnelle Überprüfung mit einem einfachen durchführen grep(vorausgesetzt, der Code ist nicht verschleiert)

grep -ilrE "curl|file_get_contents|fopen|Zend_Http_Client" app/code/local app/code/community

Und wie @Marius weiter unten sagte, suchen Sie nach verdeckten Modulen, die ihre Methoden möglicherweise in base64verschlüsselten Zeichenfolgen verbergen

grep -ilrE "eval[\t ]+\(" app/code/local app/code/community

Das einzige Problem mit der oben genannten CLI-Methode ist, dass sie zwar für ausgehende HTTP-Anforderungen äußerst effektiv ist, für HTTPS jedoch nutzlos ist (da der Datenverkehr verschlüsselt ist). Das Beste, was Sie erhalten, ist eine IP / ein Hostname, aber nichts weiter.

Ben Lessani - Sonassi
quelle
2
Möglicherweise möchten Sie auch suchen evalund sehen, was in diesen evalFunktionen geschieht . Die meisten Nebenstellen, die das Telefon zu Hause verwendet, evalnur damit Sie ihre Telefonnummer nicht leicht finden.
Marius
2
Aktualisiert, um einen eval
regulären Ausdruck
1

Schwer zu beantworten - Wenn einige Erweiterungen von Drittanbietern Anforderungen an einen Remote-Server senden, kann dies auf verschiedene Arten geschehen, je nachdem, wie die Anforderung erstellt wurde. Ihre beste Option, um solche Instanzen zu finden (obwohl sie möglicherweise langwierig sind), besteht darin, den Erweiterungscode tatsächlich zu studieren. Leider gibt es keine pauschale Methode, um solche Dinge zu identifizieren.

Da ich keine Ahnung habe, welche Erweiterungen Sie installiert haben oder wie sie erstellt wurden, möchte ich hinzufügen, dass eine solche Kommunikation, wenn die Erweiterung gut entwickelt wurde, auf eine Weise erfolgen sollte, die die Leistung des Frontends niemals beeinträchtigt.

Jonathan Hussey
quelle