Аудит безопасности сайта на Magento 2

Наша компания занимается разработкой, поддержкой и обслуживанием сайтов любой сложности. От простых одностраничных сайтов до масштабных кластерных систем построенных на микро сервисах. Опыт разработчиков подтвержден сертификатами от вендоров.
Разработка и обслуживание любых видов сайтов:
Информационные сайты или веб-приложения
Сайты визитки, landing page, корпоративные сайты, онлайн каталоги, квиз, промо-сайты, блоги, новостные ресурсы, информационные порталы, форумы, агрегаторы
Сайты или веб-приложения электронной коммерции
Интернет-магазины, B2B-порталы, маркетплейсы, онлайн-обменники, кэшбэк-сайты, биржи, дропшиппинг-платформы, парсеры товаров
Веб-приложения для управления бизнес-процессами
CRM-системы, ERP-системы, корпоративные порталы, системы управления производством, парсеры информации
Сайты или веб-приложения электронных услуг
Доски объявлений, онлайн-школы, онлайн-кинотеатры, конструкторы сайтов, порталы предоставления электронных услуг, видеохостинги, тематические порталы

Это лишь некоторые из технических типов сайтов, с которыми мы работаем, и каждый из них может иметь свои специфические особенности и функциональность, а также быть адаптированным под конкретные потребности и цели клиента

Предлагаемые услуги
Показано 1 из 1 услугВсе 2065 услуг
Аудит безопасности сайта на Magento 2
Средняя
~3-5 рабочих дней
Часто задаваемые вопросы
Наши компетенции:
Этапы разработки
Последние работы
  • image_website-b2b-advance_0.png
    Разработка сайта компании B2B ADVANCE
    1214
  • image_web-applications_feedme_466_0.webp
    Разработка веб-приложения для компании FEEDME
    1161
  • image_websites_belfingroup_462_0.webp
    Разработка веб-сайта для компании БЕЛФИНГРУПП
    852
  • image_ecommerce_furnoro_435_0.webp
    Разработка интернет магазина для компании FURNORO
    1041
  • image_crm_enviok_479_0.webp
    Разработка веб-приложения для компании Enviok
    823
  • image_bitrix-bitrix-24-1c_fixper_448_0.png
    Разработка веб-сайта для компании ФИКСПЕР
    815

Аудит безопасности Magento 2

Magento 2 — одна из наиболее атакуемых e-commerce платформ. Основные векторы: уязвимости в расширениях, устаревшие версии без патчей, открытый admin-путь. Adobe/Magento регулярно публикует APSB-бюллетени — ни один Magento-сайт не должен работать без актуальных security patches.

Проверка версии и патчей

# Текущая версия
php bin/magento --version

# Проверить применённые патчи
php ./vendor/bin/magento-patches status

# Composer audit — уязвимости в зависимостях
composer audit

# Сравнить с changelog последнего релиза
# https://experienceleague.adobe.com/docs/commerce-operations/release/notes/overview.html

Сайт на Magento 2.3.x (EOL с сентября 2022) и 2.4.3 и ниже — критически уязвим. Обновление до 2.4.6+ обязательно.

Admin URL

По умолчанию Magento 2 использует /admin или случайный суффикс из app/etc/env.php:

// app/etc/env.php
'backend' => [
    'frontName' => 'admin_secretpath'
],

Проверить через Nginx, что путь к admin не индексируется и закрыт по IP:

location /admin_secretpath {
    allow 192.168.1.0/24;
    allow 10.0.0.5;
    deny all;

    fastcgi_pass unix:/var/run/php/php8.1-fpm.sock;
    include fastcgi_params;
}

Если frontName содержит admin, backend, adminer — изменить немедленно.

Двухфакторная аутентификация

Magento 2.4.x включает 2FA из коробки (модуль Magento_TwoFactorAuth). Проверить что 2FA включена и не отключена через конфигурацию:

php bin/magento config:show twofactorauth/general/enabled
# Должно быть: 1

# Принудительно включить
php bin/magento config:set twofactorauth/general/enabled 1

# Посмотреть провайдеры
php bin/magento config:show twofactorauth/general/force_providers
# google, duo, authy, u2fkey

Проверка файловых прав

# Владелец файлов
stat /var/www/shop.com/app/etc/env.php
# Должен принадлежать www-data (или nginx), НЕ root

# Права env.php — только чтение для владельца
chmod 640 /var/www/shop.com/app/etc/env.php
chmod 640 /var/www/shop.com/app/etc/config.php

# Pub/media не должен содержать PHP
find /var/www/shop.com/pub/media -name "*.php" -type f
find /var/www/shop.com/pub/static -name "*.php" -type f

# Nginx: заблокировать PHP в media
location ~* /pub/media/.*\.(php|phtml|php3|php4|php5|phps)$ {
    deny all;
}

Проверка расширений

Сторонние расширения — наиболее частый источник уязвимостей:

# Список установленных расширений
composer show --installed | grep -v magento/

# Проверить каждое расширение на CVE
# База: https://nvd.nist.gov/vuln/search?query=magento
# MageReport: https://www.magestore.com/magento-2-security

# Проверить расширения без обновлений дольше 2 лет
composer show --installed | awk '{print $1, $2}' | while read pkg ver; do
    composer show "$pkg" --all 2>/dev/null | grep "time"
done

Расширения, устанавливающие JavaScript напрямую в layout XML без CSP, — потенциальный вектор для Magecart (card skimming атаки).

Content Security Policy

# Проверить заголовок CSP
curl -I https://shop.com/ | grep -i "content-security-policy"

# Включить CSP в Magento 2.3.5+
php bin/magento config:set csp/mode/storefront/report_only_mode 0
php bin/magento config:set csp/mode/admin/report_only_mode 0
// Кастомный CSP через WhitelistConfigInterface
class CspWhitelist implements \Magento\Csp\Api\CspWhitelistXmlInterface
{
    public function getWhitelist(): array
    {
        return [
            ['id' => 'script-src', 'value' => 'https://js.stripe.com'],
            ['id' => 'frame-src', 'value' => 'https://js.stripe.com'],
        ];
    }
}

Проверка на Magecart-инъекции

Magecart — атаки через встроенный JS для кражи данных карт:

# Проверить JS-файлы на изменения
find /var/www/shop.com/pub/static -name "*.js" -newer /var/www/shop.com/composer.lock | \
    head -20

# Проверить inline JS в базе данных
mysql -u root -p magento2 -e "
    SELECT value FROM core_config_data
    WHERE path LIKE '%script%' OR path LIKE '%tracking%' OR path LIKE '%google%'
    AND value LIKE '%<script%';"

# Проверить CMS-блоки на посторонний JS
mysql -u root -p magento2 -e "
    SELECT identifier, content FROM cms_block
    WHERE content LIKE '%eval(%' OR content LIKE '%document.write%'
    OR content LIKE '%fromCharCode%';"

SQL Injection в кастомных модулях

// Уязвимый паттерн (встречается в старых расширениях)
$query = "SELECT * FROM catalog_product_entity WHERE sku = '" . $sku . "'";
$result = $this->_resource->getConnection()->query($query);

// Безопасно через Magento 2 ResourceModel
$connection = $this->resource->getConnection();
$select = $connection->select()
    ->from(['e' => 'catalog_product_entity'])
    ->where('e.sku = ?', $sku);
$result = $connection->fetchAll($select);

Проверить все кастомные модули на прямую конкатенацию в SQL-запросах:

grep -r "getConnection()->query" /var/www/shop.com/app/code/ | \
    grep -v "//.*query" | grep "\$_GET\|\$_POST\|\$_REQUEST\|\$request->getParam"

Проверка логов на атаки

# Подозрительные запросы к admin
grep "POST.*admin" /var/log/nginx/access.log | \
    awk '{print $1}' | sort | uniq -c | sort -rn | head -20

# Brute force попытки
grep "401\|403" /var/log/nginx/access.log | \
    awk '{print $1}' | sort | uniq -c | sort -rn | head -10

# Magento security log
cat /var/www/shop.com/var/log/exception.log | grep -i "authentication\|unauthorized" | tail -50

Шифрование ключей

# Проверить что crypt/key в env.php не пустой и достаточно длинный
php -r "
\$env = require '/var/www/shop.com/app/etc/env.php';
\$key = \$env['crypt']['key'];
echo 'Key length: ' . strlen(\$key) . PHP_EOL;
echo 'Key entropy OK: ' . (strlen(unique_chars(\$key)) > 20 ? 'Yes' : 'No') . PHP_EOL;
"

# Ротация ключа шифрования (шифрует заново данные карт, API-ключи в БД)
php bin/magento encryption:payment-data:update

Сроки

Аудит безопасности Magento 2 с отчётом по уязвимостям и рекомендациями — 2–3 дня. Включая проверку всех сторонних расширений, конфигурации сервера, БД и анализ логов.