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

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

Розробка та обслуговування будь-яких видів сайтів:

Інформаційні сайти або веб-програми
Сайти візитки, landing page, корпоративні сайти, онлайн каталоги, квіз, промо-сайти, блоги, ресурси новин, інформаційні портали, форуми, агрегатори
Сайти або веб-програми електронної комерції
Інтернет-магазини, B2B-портали, маркетплейси, онлайн-обмінники, кешбек-сайти, біржі, дропшиппінг-платформи, парсери товарів
Веб-програми для управління бізнес-процесами
CRM-системи, ERP-системи, корпоративні портали, системи управління виробництвом, парсери інформації
Сайти або веб-програми електронних послуг
Дошки оголошень, онлайн-школи, онлайн-кінотеатри, конструктори сайтів, портали надання електронних послуг, відеохостинги, тематичні портали

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

Пропоновані послуги
Показано 1 з 1 послугУсі 2065 послуг
Аудит безпеки сайту на Magento 2
Середня
~3-5 робочих днів
Часті питання

Наші компетенції:

Етапи розробки

Останні роботи

  • image_website-b2b-advance_0.png
    Розробка сайту компанії B2B ADVANCE
    1262
  • image_web-applications_feedme_466_0.webp
    Розробка веб-додатків для компанії FEEDME
    1171
  • image_websites_belfingroup_462_0.webp
    Розробка веб-сайту для компанії БЕЛФІНГРУП
    874
  • image_ecommerce_furnoro_435_0.webp
    Розробка інтернет магазину для компанії FURNORO
    1094
  • image_crm_enviok_479_0.webp
    Розробка веб-додатків для компанії Enviok
    831
  • image_bitrix-bitrix-24-1c_fixper_448_0.png
    Розробка веб-сайту для компанії ФІКСПЕР
    851

Аудит безпеки Magento 2

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

Перевірка версії та патчів

# Поточна версія
php bin/magento --version

# Перевірити застосовані патчі
php ./vendor/bin/magento-patches status

# Composer audit — вразливості у залежностях
composer audit

# Порівняти з журналом змін останнього випуску
# https://experienceleague.adobe.com/docs/commerce-operations/release/notes/overview.html

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

URL адміністратора

За замовчуванням Magento 2 використовує /admin або випадковий суфікс з app/etc/env.php:

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

Переконайтеся через Nginx, що шлях адміністратора не індексується та обмежений за 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 (атак крадіжки карток).

Політика безпеки контенту

# Перевірити заголовок 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

# Перевірити вбудований 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-ін'єкція у спеціальних модулях

// Вразливий шаблон (знайдено в старіших розширеннях)
$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"

Перевірка журналів на атаки

# Підозрілі запити до адміністратора
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
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 дні. Включаючи перевірку всіх сторонніх розширень, конфігурацію сервера, БД та аналіз журналів.