Como identificar extensões que "telefonam para casa"?

10

Existe uma maneira de identificar o código que envia solicitações HTTP para um servidor remoto em segundo plano?

Percebi que, quando tenho uma recepção irregular na minha máquina de desenvolvimento, muitas lojas demoram muito para carregar, mesmo rodando no host local.

Sinto que alguns servidores remotos demoram muito tempo a responder devido à minha conexão irregular. Gostaria de identificar essas solicitações e removê-las, porque temo que elas também reduzam a velocidade das instalações ativas, por exemplo, se o servidor externo estiver inativo ou lento ...

Louis B.
fonte
1
Observe / verifique se você tem permissão para remover essas chamadas. Você é permitido, mas eu já vi casos em que esse é um dos requisitos de extensões.
David Mulder

Respostas:

8

Fazemos isso com uma função de linha de comando (Bash) em qualquer servidor Web respectivo na pilha,

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"
}

Além disso, você pode aproveitar os métodos CURL / fopen no Magento (mas isso pressupõe que eles se preocupem em usar métodos principais para fazê-lo); na maioria das vezes, você encontrará módulos personalizados usando seus métodos abertos file_get_contents()ou curl.

Você pode fazer uma verificação rápida com uma simples grep(assumindo que o código não esteja ofuscado)

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

E como o @Marius disse abaixo, procure por módulos obscuficados, que podem ocultar seus métodos em base64strings criptografadas

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

O único problema com o método CLI acima é extremamente eficaz para solicitações HTTP de saída, é inútil para HTTPS (dado que o tráfego é criptografado), o melhor é um IP / nome de host, mas nada além disso.

Ben Lessani - Sonassi
fonte
2
Você também pode procurar evale ver o que acontece nessas evalfunções. A maioria das extensões que o telefone residencial usa evalapenas para que você não encontre o número de telefone facilmente.
Marius
2
Atualizado para incluir um regex para evalé demasiado
Ben Lessani - Sonassi
1

Difícil de responder - se algumas extensões de terceiros estiverem enviando solicitações para um servidor remoto, isso pode estar acontecendo de várias maneiras, dependendo de como a solicitação foi criada. Sua melhor opção para encontrar essas instâncias (apesar de potencialmente prolongada) é realmente estudar o código de extensão, infelizmente não existe um método geral para identificar coisas como essa.

Não tendo idéia de quais extensões você instalou ou como elas foram construídas, acrescentarei que, se a extensão tiver sido desenvolvida bem, qualquer comunicação desse tipo deverá ter sido feita de uma maneira que nunca afete o desempenho do front-end.

Jonathan Hussey
fonte