Как определить расширения, которые «звонят домой»?

10

Есть ли способ идентифицировать код, который отправляет HTTP-запросы на удаленный сервер в фоновом режиме?

Я заметил, что, когда у меня на компьютере разработки нет приема, многие магазины загружаются очень долго, даже на локальном хосте.

У меня такое ощущение, что некоторые удаленные серверы долго реагируют из-за моего нестабильного соединения. Я хотел бы идентифицировать эти запросы и удалить их, потому что боюсь, что они также могут замедлить установку в реальном времени, например, если внешний сервер не работает или работает медленно ...

Луи Б.
источник
1
Обратите внимание / проверьте, разрешено ли вам удалить эти звонки. Возможно, вам разрешено, но я видел случаи, когда это было одним из требований расширения.
Дэвид Малдер

Ответы:

8

Мы делаем это с помощью функции командной строки (Bash) на любом соответствующем веб-сервере в стеке,

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

Если не считать этого, вы можете использовать методы CURL / fopen в Magento (но это предполагает, что они пытаются использовать основные методы для этого), чаще всего вы обнаружите, что пользовательские модули используют свои методы open file_get_contents()или open curl.

Вы можете сделать быструю проверку с помощью простого grep(при условии, что код не запутан)

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

И, как сказал @Marius ниже, обратите внимание на скрытые модули, которые могут скрывать свои методы в base64зашифрованных строках.

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

Единственная проблема с методом CLI, описанным выше, заключается в том, что, хотя он чрезвычайно эффективен для исходящих HTTP-запросов и бесполезен для HTTPS (учитывая, что трафик зашифрован), лучшее, что вы получите, - это IP / имя хоста, но ничего более.

Бен Лессани - Сонасси
источник
2
Вы также можете посмотреть evalи посмотреть, что происходит в этих evalфункциях. Большинство добавочных номеров, которыми пользуется домашний телефон, используются для evalтого, чтобы вам было нелегко найти их номер.
Мариус
2
Обновлен, чтобы включить регулярное выражение для evalтоже
Бен Лессани - Сонасси
1

Трудно ответить - если некоторые сторонние расширения отправляют запросы на удаленный сервер, это может происходить множеством способов в зависимости от того, как был создан запрос. Наилучшим вариантом для поиска таких экземпляров (хотя они потенциально затянуты) является на самом деле изучение кода расширения, к сожалению, не существует единого общего метода для идентификации таких вещей.

Не имея представления о том, какие расширения вы установили или как они были построены, я добавлю, что если расширение было разработано правильно, любое такое взаимодействие должно было бы осуществляться таким образом, чтобы оно никогда не влияло на производительность внешнего интерфейса.

Джонатан Хасси
источник