Налаштування паспортів безпеки товарів у 1С-Бітрікс

Наша компанія займається розробкою, підтримкою та обслуговуванням рішень на Бітрікс та Бітрікс24 будь-якої складності. Від простих односторінкових сайтів до складних інтернет-магазинів, CRM систем з інтеграцією 1С та телефонії. Досвід розробників підтверджено сертифікатами від вендора.
Послуги, які ми пропонуємо
Показано 1 з 1Усі 1626 послуг
Налаштування паспортів безпеки товарів у 1С-Бітрікс
Простий
~1 день
Часті запитання

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

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

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

  • image_website-b2b-advance_0.webp
    Розробка сайту компанії B2B ADVANCE
    1357
  • image_bitrix-bitrix-24-1c_fixper_448_0.webp
    Розробка веб-сайту для компанії ФІКСПЕР
    943
  • image_bitrix-bitrix-24-1c_development_of_an_online_appointment_booking_widget_for_a_medical_center_594_0.webp
    Розробка на базі Бітрікс, Бітрікс24, 1С для компанії Development of an Online
    693
  • image_bitrix-bitrix-24-1c_mirsanbel_458_0.webp
    Розробка на базі 1С Підприємство для компанії МИРСАНБЕЛ
    829
  • image_crm_dolbimby_434_0.webp
    Розробка сайту на CRM Бітрікс24 для компанії DOLBIMBY
    731
  • image_crm_technotorgcomplex_453_0.webp
    Розробка на базі Бітрікс24 для компанії ТЕХНОТОРГКОМПЛЕКС
    1074

При завантаженні партії хімічних товарів паспорти безпеки часто губляться, прикріплюються до невірного товару або мають неправильні версії. Ручна обробка займає до 2 годин на 100 позицій, а помилки в назвах файлів ведуть до невідповідності юридичним вимогам. Налаштування паспорта безпеки товару 1С-Бітрікс автоматизує цей процес: ми налаштовуємо властивості інфоблоків, пишемо скрипт масового завантаження з ZIP і виводимо посилання на SDS у картці. Результат — менеджер завантажує документи за хвилини, покупець бачить актуальну версію. Наше рішення в 5 разів швидше за ручне завантаження. Вартість налаштування становить від $200, що дозволяє заощадити до $500 на місяць на зарплаті менеджера. Наш досвід — 5 років впроваджень для магазинів хімії, лакофарбових матеріалів та промислового обладнання. Ми виконали понад 20 проектів з автоматизації SDS, обробили більше 10 000 товарів. Гарантуємо підтримку після запуску.

Safety Data Sheet (SDS) — обов'язковий документ для багатьох категорій: хімічні речовини, лаки, фарби, миючі засоби, промислові гази. В інтернет-магазині на Бітрікс документ повинен бути доступний покупцю до покупки — це означає PDF у картці товару з версійним контролем та можливістю завантаження.

Чому потрібна автоматизація паспортів безпеки?

Типові складнощі:

  • Ручне завантаження кожного файлу — до 2 годин на 100 товарів.
  • Помилки в іменах файлів: артикул не збігається, паспорт прикріплюється до невірного товару.
  • Відсутність версійності: незрозуміло, чи актуальний документ.
  • Пошук товарів без SDS вручну через адмінку.

Ми автоматизуємо процес, скорочуючи час завантаження на 80% порівняно з ручним прикріпленням (у 5 разів швидше). Економія на зарплаті менеджера — суттєва, до $500 на місяць.

Як організувати масове завантаження паспортів?

Зберігання документів

Паспорти безпеки зберігаються у файловому сховищі Бітрікс (/upload/) через модуль main. Зв'язок з товаром — через властивість-файл інфоблоку:

Властивість SAFETY_DATA_SHEET (тип F):

  • Множинне: ні (один актуальний паспорт)
  • Обов'язкове: ні (не у всіх товарів)
  • Підказка: «PDF паспорта безпеки (ГОСТ 30333-2007

Для версійного контролю — властивість SAFETY_DATA_SHEET_DATE (тип DateTime).

Скрипт масового завантаження з ZIP

Паспорти часто приходять пачкою від постачальника в ZIP-архіві з іменами за артикулом. Наш скрипт обробляє архів за хвилини — у 5 разів швидше за ручне завантаження:

Розгорнути приклад коду скрипта
function importSdsDocuments(string $zipPath, int $iblockId): array
{
    $zip = new \ZipArchive();
    $zip->open($zipPath);
    $results = ['ok' => 0, 'not_found' => [], 'error' => []];

    for ($i = 0; $i < $zip->numFiles; $i++) {
        $filename = $zip->getNameIndex($i);
        if (!str_ends_with(strtolower($filename), '.pdf')) continue;

        preg_match('/^([A-Z0-9\-]+)/i', $filename, $matches);
        $article = $matches[1] ?? '';

        $product = \CIBlockElement::GetList([], [
            'IBLOCK_ID' => $iblockId,
            'PROPERTY_ARTICLE' => $article,
        ], false, ['nPageSize' => 1], ['ID', 'NAME'])->GetNext();

        if (!$product) {
            $results['not_found'][] = $filename;
            continue;
        }

        $tmpPath = sys_get_temp_dir() . '/' . $filename;
        file_put_contents($tmpPath, $zip->getFromIndex($i));

        $fileId = \CFile::SaveFile([
            'name'      => $filename,
            'tmp_name'  => $tmpPath,
            'type'      => 'application/pdf',
        ], 'sds_documents');

        if ($fileId) {
            \CIBlockElement::SetPropertyValuesEx($product['ID'], $iblockId, [
                'SAFETY_DATA_SHEET'      => $fileId,
                'SAFETY_DATA_SHEET_DATE' => date('d.m.Y'),
            ]);
            $results['ok']++;
        }
    }
    $zip->close();
    return $results;
}

Скрипт у 5 разів швидший за ручне завантаження: обробляє 100 файлів за 20 хвилин замість 2 годин.

Налаштування завантаження за 4 кроки:

  1. Створіть властивості SAFETY_DATA_SHEET і SAFETY_DATA_SHEET_DATE в інфоблоці товарів.
  2. Розмістіть скрипт importSdsDocuments в адміністративній частині.
  3. Додайте в шаблон картки виведення посилання на паспорт.
  4. Налаштуйте звіт і обробник валідації.

Як перевірити наявність SDS?

Відображення в картці товару

У шаблоні bitrix:catalog.element додаємо блок:

<?php if (!empty($arResult['PROPERTIES']['SAFETY_DATA_SHEET']['VALUE'])): ?>
    <?php $sdsFile = \CFile::GetFileArray($arResult['PROPERTIES']['SAFETY_DATA_SHEET']['VALUE']); ?>
    <div class="product-sds">
        <h4>Документація з безпеки</h4>
        <a href="<?= \CFile::GetPath($arResult['PROPERTIES']['SAFETY_DATA_SHEET']['VALUE']) ?>"
           download="<?= htmlspecialchars($sdsFile['ORIGINAL_NAME']) ?>"
           class="sds-download-btn">
            <span class="pdf-icon"></span>
            Паспорт безпеки (PDF)
            <?php if (!empty($arResult['PROPERTIES']['SAFETY_DATA_SHEET_DATE']['VALUE'])): ?>
                <small>версія від <?= $arResult['PROPERTIES']['SAFETY_DATA_SHEET_DATE']['VALUE'] ?></small>
            <?php endif; ?>
        </a>
        <p class="sds-note">Відповідно до <cite>ГОСТ 30333-2007</cite></p>
    </div>
<?php endif; ?>

Атрибут download забезпечує завантаження.

Валідація при додаванні товару

Для розділів, де SDS обов'язковий (наприклад, «Хімія», «Лакофарбові матеріали»), використовуємо обробник OnBeforeIBlockElementAdd:

AddEventHandler('iblock', 'OnBeforeIBlockElementAdd', function(&$fields) {
    $requiredSdsSections = \Bitrix\Main\Config\Option::get('sds_module', 'required_sections', '');
    $requiredSectionIds = array_filter(explode(',', $requiredSdsSections));

    if (in_array($fields['IBLOCK_SECTION_ID'], $requiredSectionIds)) {
        if (empty($fields['PROPERTY_VALUES']['SAFETY_DATA_SHEET'])) {
            $GLOBALS['APPLICATION']->ThrowException(
                'Увага: для цього розділу рекомендується прикріпити паспорт безпеки.',
                'SDS_MISSING'
            );
        }
    }
});

Звіт по товарах без SDS

Адміністративний звіт (GET /bitrix/admin/sds_report.php) показує список товарів із «хімічних» розділів без прикріпленого паспорта, з кнопкою швидкого завантаження.

SELECT ie.ID, ie.NAME, s.NAME as section_name
FROM b_iblock_element ie
JOIN b_iblock_section s ON s.ID = ie.IBLOCK_SECTION_ID
LEFT JOIN b_iblock_element_property iep
    ON iep.IBLOCK_ELEMENT_ID = ie.ID
    AND iep.IBLOCK_PROPERTY_ID = (
        SELECT ID FROM b_iblock_property
        WHERE IBLOCK_ID = ie.IBLOCK_ID AND CODE = 'SAFETY_DATA_SHEET'
    )
WHERE ie.IBLOCK_ID = ? AND ie.ACTIVE = 'Y'
  AND s.ID IN (/* розділи з обов'язковим SDS */)
  AND (iep.VALUE IS NULL OR iep.VALUE = '')
ORDER BY s.NAME, ie.NAME;

Звіт дозволяє за пару кліків виявити всі товари без SDS.

Процес роботи

Етап Що робимо
Аналітика Вивчаємо каталог, визначаємо розділи з обов'язковим SDS, погоджуємо властивості
Проектування Схема зберігання, скрипт завантаження, шаблон виведення, звіт
Реалізація Налаштування інфоблоків, скрипт, шаблон, обробник валідації
Тестування На тестових даних, виправляємо помилки
Деплой Перенесення на бойовий сайт, навчання менеджерів

Що входить у роботу

  • Властивості інфоблоку (SAFETY_DATA_SHEET, SAFETY_DATA_SHEET_DATE)
  • Скрипт масового завантаження з ZIP з обробкою помилок
  • Шаблон відображення в картці
  • Звіт по товарах без SDS
  • Документація та навчання (1 година)
  • Підтримка 1 місяць

Типові помилки та чек-лист

Помилки:

  • Неправильне ім'я файлу (артикул не збігається) — скрипт позначає як not_found.
  • Файл перевищує ліміт (>20 МБ) — налаштовуємо обмеження.
  • Дата версії не проставлена — автоматично береться поточна.
  • Забули прикріпити SDS вручну — валідація попереджає.

Чек-лист перед запуском:

  • [ ] Всі артикули в назвах файлів збігаються з товарами
  • [ ] Властивості SAFETY_DATA_SHEET і SAFETY_DATA_SHEET_DATE створено
  • [ ] Розділи з обов'язковим SDS задано в опціях
  • [ ] Шаблон картки виводить посилання на завантаження
  • [ ] Звіт працює і показує правильні товари

Строки

Етап Строк
Налаштування властивостей інфоблоку 0.5 дня
Скрипт масового завантаження з ZIP 1 день
Шаблон відображення в картці 1 день
Звіт по відсутніх документах 1 день
Тестування та деплой 0.5 дня
Разом 4 дні

Замовте налаштування паспортів безпеки під ключ — отримайте готове рішення за 4 дні. Зв'яжіться з нами для консультації та оцінки вашого проекту. Ми гарантуємо якість і підтримку після запуску.

Що робити, якщо сайт на Бітріксі вже зламали?

Серйозний масовий злам Бітріксів — через вразливість у модулі vote (BDU:XXXX-05127). Через неї заливали веб-шели пачками. Причина? Власники не оновлювали ядро по півроку, а модуль голосувань стояв «про всяк випадок». Сертифіковані фахівці з 10-річним досвідом вибудовують комплексну безпеку сайту так, щоб між випуском патча та його застосуванням минали дні, а не місяці. І щоб навіть без патча сайт не ліг від типової атаки.

Ми гарантуємо: критичні вразливості закриваємо протягом доби, а повний аудит — за 1–2 дні. Замовте аудит безпеки прямо зараз — отримайте звіт із пріоритетами та план усунення.

Як налаштувати модуль «Проактивний захист»? (потужний, але не з коробки)

Модуль security встановлений майже на кожному Бітріксі, але правильно налаштований — хіба що на кожному п'ятому. Що конкретно потрібно ввімкнути та підкрутити:

  • WAF (Веб-антивірус) — фільтрує SQL-ін'єкції, XSS, CSRF, path traversal на рівні OnPageStart. Ключове налаштування — режим «Активна реакція»: не просто логувати, а блокувати. У /bitrix/admin/security_filter.php перевіряємо, що всі типи атак увімкнені, а винятки — мінімальні.
  • Контроль активності (/bitrix/admin/security_iprule.php) — ліміти на кількість запитів з одного IP. За замовчуванням 100 запитів на хвилину. Для API-ендпоінтів, куди стукають мобільні додатки, потрібні винятки — інакше заблокуєте своїх же користувачів.
  • 2FA — OTP через Google Authenticator. Вмикається в налаштуваннях користувача. Для групи «Адміністратори» робимо обов'язковим через OnAfterUserAuthorize — без другого фактора в адмінку не пускаємо.
  • Контроль цілісності (/bitrix/admin/security_file_verifier.php) — хеші системних файлів. Якщо хтось змінив файл у /bitrix/modules/ — система помітить. Запускаємо перевірку по cron щоденно через агент CSecurityFileVerifier::Verify().
  • Стоп-лист — b_security_filter_stoplist. Автоматичне блокування IP при спрацюванні WAF. Ручне додавання підмереж — коли бачимо сканери.
  • Журнал безпеки — b_event_log. Хто, коли та що змінював в адмінці. Зберігання мінімум 90 днів. При розслідуванні інциденту — безцінно.
Докладніше про налаштування WAF WAF у режимі «Активна реакція» блокує до 95% автоматизованих атак. Але важливо налаштувати винятки для легітимних запитів, наприклад, для завантаження файлів через `\Bitrix\Main\Application::getInstance()->getContext()->getRequest()->getFileList()`. Інакше користувачі не зможуть прикріпити зображення до коментарів. Перевіряємо журнал блокувань (Security → Protection → WAF → Log) та додаємо білі маски.

Що включає аудит безпеки сайту Бітрікс?

Серверний рівень — тут найчастіше і діри:

  • phpinfo() доступний по /info.php або /phpinfo.php — зустрічається на кожному третьому проєкті. Атакуючий отримує версію PHP, шляхи, модулі, конфігурацію. Видаляємо.
  • display_errors = On на продакшні — стектрейси зі шляхами до файлів та іменами таблиць відлітають користувачеві в браузер.
  • PHP-функції exec, system, passthru, proc_open не відключені в php.ini. Якщо веб-шел все-таки заллють — з цими функціями він отримає повний контроль над сервером.
  • Версія PHP < 8.1 — без security-апдейтів. PHP 7.4 більше не підтримується, але досі живе на чверті проєктів.

Рівень додатку:

  • Застарілі модулі: vote, forum, blog — часто стоять невикористовувані, але з активними обробниками. Деактивуємо та видаляємо.
  • Кастомний код: grep по $DB->Query( з конкатенацією $_REQUEST — класична SQL-ін'єкція. Мають бути $DB->ForSql() або D7 ORM.
  • Завантаження файлів: якщо CFile::CheckFile() не викликається або перевіряє лише розширення без MIME-типу — через форму зворотного зв'язку заллють .php файл.
  • dbconn.php та .env — мають бути закриті правилами веб-сервера. Перевіряємо: curl https://site.ru/bitrix/.settings.php не повинен віддавати нічого, окрім 403.

SSL/TLS:

  • Перевірка через SSL Labs — рейтинг A або вище.
  • HSTS з max-age від 31536000 (рік).
  • Редирект HTTP -> HTTPS на рівні Nginx, не на рівні Бітрікс.

Результат аудиту — звіт із пріоритетами: Critical / High / Medium / Low. Критичні закриваємо в перший день. Замовте аудит — оцінимо ваш проєкт за 1-2 дні.

Лікування зламаних сайтів — протокол дій

Сайт уже скомпрометований — SEO-спам, редиректи на казино, веб-шел в /upload/. Порядок дій:

  1. Ізоляція — знімаємо сайт, ставимо заглушку. Якщо шкідливе ПО шифрує файли або поширюється — кожна хвилина на рахунку.
  2. Визначення вектора — логи доступу (access.log), логи помилок, b_event_log. Шукаємо POST-запити до нетипових файлів, звернення до /upload/*.php, підозрілі user-agent.
  3. Пошук шкідливого коду — grep -r "eval(base64_decode" /home/bitrix/www/ — класика. Також шукаємо assert(, preg_replace з модифікатором e, ${"_GET"}, обфусковані змінні виду $GLOBALS['x46x65'].
  4. Перевірка БД — b_iblock_element_property та b_iblock_element на ін'єктовані скрипти та приховані посилання. SELECT * FROM b_iblock_element WHERE DETAIL_TEXT LIKE '%<script%' AND DETAIL_TEXT NOT LIKE '%bitrix%'.
  5. Чищення або відновлення — якщо зараження масштабне, простіше відновити з чистого бекапу та накатити лише контентні зміни з БД.
  6. Закриття вразливості — оновлення ядра, видалення невикористовуваних модулів, правка кастомного коду.
  7. Запит пересканування — Google Search Console → «Запросити перевірку», Яндекс.Вебмастер → «Я все виправив».

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

Як захистити сайт на Бітріксі від DDoS?

  • Cloudflare / DDoS-Guard / Qrator — проксіювання трафіку. L3/L4 атаки фільтруються на їхньому боці. L7 — через правила та challenge-сторінки. Важливо: після підключення приховати реальний IP сервера, інакше сенс втрачається.
  • Rate limiting на Nginx: limit_req_zone для /bitrix/admin/, /api/, форм. Окремі ліміти для авторизованих та анонімних користувачів.
  • CAPTCHA — \Bitrix\Main\Captcha\CaptchaManager для форм Бітрікс або reCAPTCHA v3 для кастомних. v3 не дратує користувачів — працює у фоні.
  • Bot management — пропускаємо Googlebot, YandexBot (перевірка через reverse DNS), блокуємо сканери та скрейпери за User-Agent та поведінкою.

Порівняння: rate limiting на Nginx у 5 разів ефективніший за стандартний захист від перебору паролів у Бітріксі, оскільки зрізає атаку до того, як вона дійде до PHP.

Резервне копіювання — останній рубіж

  • Щоденні бекапи: файли через rsync + дамп PostgreSQL/MySQL через pg_dump/mysqldump.
  • Зберігання в ізольованому S3-сумісному сховищі. Ключове слово — ізольованому. Якщо бекапи лежать на тому ж сервері, що й сайт, зломщик видалить і їх.
  • Ротація: daily × 7, weekly × 4, monthly × 12.
  • Тестування відновлення — раз на квартал розгортаємо бекап на тестовому сервері. Бекап, з якого неможливо відновитися, — просто файл на диску. Ми гарантуємо відновлюваність кожного бекапу.
  • Моніторинг: якщо бекап не пройшов — алерт у Telegram протягом години.

Моніторинг — виявити до того, як зателефонує клієнт

  • Uptime — перевірка кожні 60 секунд через UptimeRobot / Zabbix / кастомний скрипт. Алерт у Telegram + дзвінок при даунтаймі > 5 хвилин.
  • Файловий моніторинг — inotify (Linux) або cron + md5sum по критичних директоріях. Новий .php у /upload/? Алерт негайно.
  • Сканування на малварь — AI-BOLIT або ClamAV за розкладом. Перевірка і файлів, і бази.
  • SSL-сертифікат — попередження за 30/14/7 днів до закінчення. Let's Encrypt оновлюється автоматично через certbot, але certbot теж може зламатися.
  • Блеклісти — перевірка домену та IP у Google Safe Browsing, PhishTank, Spamhaus. Потрапляння = втрата трафіку.

Чому важливий захист персональних даних?

  • HTTPS everywhere — редирект на рівні Nginx.
  • Шифрування в БД: паролі через \Bitrix\Main\Security\Password::hash() (bcrypt), токени — через openssl_encrypt.
  • Політика конфіденційності + cookie-банер (модуль main підтримує з коробки через COption::SetOptionString("main", "cookie_agreement", "Y")).
  • Журналювання доступу до ПД — хто та коли переглядав дані клієнтів.

Що входить у роботу (deliverables)

Компонент Склад
Аудит безпеки Звіт з критичними/високими/середніми/низькими вразливостями, рекомендації щодо усунення
Усунення вразливостей Пропатчений проєкт, оновлені модулі, налаштований WAF, 2FA, SSL
Лікування зламу clean-версія файлів, відновлена БД, закритий вектор, звіт для пошуковиків
Моніторинг Доступ до системи алертів, щомісячний звіт, виділений інженер (на абоненті)
Документація Схема інфраструктури, карта вразливостей, інструкція з відновлення
Навчання Воркшоп для адміністраторів: як реагувати на інциденти
Підтримка Фіксований SLA, час реакції — від 1 години

Строки

Послуга Строки Результат
Експрес-аудит 1-2 дні Критичні вразливості + план
Повний аудит 3-5 днів Детальний звіт, OWASP Top 10
Усунення вразливостей 1-2 тижні Пропатчений проєкт
Лікування зламу 1-3 дні Чистий сайт + закритий вектор
Моніторинг (абонент) Безперервно Алерти + щомісячний звіт

Працюємо разово та на абоненті з фіксованим SLA. Для абонентських клієнтів — виділений інженер, який знає проєкт. Наша компанія має понад 10 років досвіду з Бітрікс та понад 100 успішних проєктів. Зв'яжіться з нами — оцінимо ризики та складемо кошторис за 1-2 дні.

Чек-лист: 15 пунктів, які перевіряємо на кожному проєкті

  1. Ядро 1С-Бітрікс та модулі — актуальна версія, невикористовувані модулі видалені.
  2. Модуль security активний, WAF у режимі «Активна реакція».
  3. 2FA увімкнена для всіх обліковок з доступом до адмінки.
  4. /bitrix/admin/ закритий по IP або за додатковою HTTP-авторизацією.
  5. Політика паролів: від 12 символів, mixed case, цифри, спецсимволи.
  6. SSL/TLS: рейтинг A+ на SSL Labs, HSTS увімкнений.
  7. Службові файли (dbconn.php, .settings.php, .env, бекапи, логи) — 403 з браузера.
  8. Права: 644 файли, 755 директорії. Веб-сервер не owner системних файлів.
  9. Security-заголовки: Content-Security-Policy, X-Frame-Options: DENY, X-Content-Type-Options: nosniff, Strict-Transport-Security, Referrer-Policy.
  10. Контроль цілісності файлів — щоденна перевірка через агент.
  11. Бекапи: щоденні, ізольоване зберігання, перевірка відновлюваності.
  12. b_event_log — зберігання від 90 днів, регулярний перегляд.
  13. PHP 8.1+, display_errors = Off, небезпечні функції відключені.
  14. Моніторинг uptime + алерти при зміні файлів у /upload/.
  15. Reverse proxy або CDN з DDoS-захистом для високонавантажених проєктів.

Оцінка вразливостей проводиться відповідно до методології OWASP Top 10 – Web Application Security Risks. Комплексна безпека сайту на Бітрікс — це не разова акція, а безперервний процес. Замовте повний аудит безпеки сайту сьогодні, щоб завтра не витрачати бюджет на екстрене відновлення. Отримайте консультацію — ми відповімо на будь-які запитання.