Як визначити розширення, які є "домашнім телефоном"?


10

Чи є спосіб визначити код, який надсилає HTTP-запити на віддалений сервер у фоновому режимі?

Я помітив, що коли на моїй розробці є плямистий прийом, багато магазинів потребують тривалого завантаження, навіть працює на localhost.

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


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()або 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«занадто
Бен Lessani - Sonassi

1

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

Не маючи уявлення про те, які розширення ви встановили чи як вони були побудовані, я додам, що якщо розширення було добре розроблено, будь-яке таке спілкування повинно було бути виконане певним чином, що це ніколи не вплине на продуктивність фронтенду.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.