Электронные товары в 1С-Битрикс: настройка защиты и доставки
Мы часто встречаем ситуацию: клиент продаёт электронные книги, лицензии или видеоуроки, а после оплаты письмо с файлом не приходит. Или ссылка на скачивание работает бесконечно, либо файл доступен без оплаты при прямом переборе URL. Все три проблемы — следствие неправильной настройки типа товара и защиты файлов. За 10+ лет работы с Битриксом мы перебрали десятки таких кейсов и выработали надёжный подход, который применяем в каждом проекте. Например, на одном проекте с электронными курсами мы сократили время доставки файла с 5 минут до 30 секунд после оплаты — в 10 раз быстрее, чем стандартный механизм почтовой рассылки.
Тип товара и поле файла
Цифровой товар в Битриксе — товар с типом TYPE_ELECTRONICAL (значение 5) в поле TYPE таблицы b_catalog_product. Файл для скачивания привязывается через свойство инфоблока типа "Файл" (FILE) или через специальный механизм b_catalog_product — поле FILE_ID, которое ссылается на b_file.
Установка типа и файла:
\Bitrix\Catalog\ProductTable::update($productId, [
'TYPE' => \Bitrix\Catalog\ProductTable::TYPE_ELECTRONICAL,
]);
// Прикрепление файла через свойство инфоблока
\CIBlockElement::SetPropertyValuesEx($productId, $iblockId, [
'DIGITAL_FILE' => [
'VALUE' => \CFile::MakeFileArray('/path/to/file.zip'),
],
]);
Почему стандартная защита файлов не работает?
По умолчанию файлы загружаются в /upload/ и доступны всем, кто знает прямой URL. Это критическая уязвимость для платных материалов. Штатный bitrix:sale.personal.order не меняет этого. Решение — вынести файлы в защищённую директорию и генерировать временные ссылки. В одном из проектов мы обнаружили, что 15% трафика на файлы шло без оплаты — после внедрения защиты утечка полностью прекратилась.
Как защитить файлы от прямого доступа?
Файлы цифровых товаров не должны лежать в /upload/ с прямым HTTP-доступом. Стандартный механизм Битрикса — папка /upload/protected/ с правилом в .htaccess или nginx, запрещающим прямой доступ. Скачивание идёт через защищённый URL, генерируемый системой.
Конфигурация nginx для защиты директории:
location /upload/protected/ {
deny all;
return 403;
}
Доступ к файлу предоставляется через компонент bitrix:sale.personal.order или отдельный обработчик, который проверяет наличие оплаченного заказа с этим товаром и генерирует временный URL.
Как ускорить доставку файла после оплаты?
Стандартный механизм — обработчик события OnSaleOrderPaid в модуле sale. При оплате заказа система проходит по позициям корзины, находит товары с TYPE = 5 и отправляет ссылку на скачивание на email покупателя. Но если писем много, могут быть задержки. Мы рекомендуем дополнительно выводить ссылку в личном кабинете сразу после оплаты — это ускоряет отдачу.
Ограничение количества скачиваний и срок действия ссылки управляются свойствами товара. В стандартном модуле catalog нет встроенного счётчика скачиваний — это добавляется кастомно через отдельную таблицу или свойства заказа.
Реализация выдачи файла с проверкой прав:
// В обработчике запроса на скачивание
$orderId = (int)$_GET['order'];
$productId = (int)$_GET['product'];
$hash = $_GET['hash'];
// Проверить токен
$expected = md5($orderId . $productId . $userId . SITE_ID . $_SERVER['HTTP_HOST']);
if ($hash !== $expected) {
die('Access denied');
}
// Проверить оплаченность заказа
$order = \Bitrix\Sale\Order::load($orderId);
if (!$order || $order->isPaid() !== true) {
die('Order not paid');
}
// Выдать файл
$fileId = getDigitalFileByProduct($productId);
$file = \Bitrix\Main\IO\File::createInstance(\CFile::GetPath($fileId));
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename="' . basename($file->getPath()) . '"');
$file->readFile();
Срок действия ссылки
Ссылка со временным токеном должна протухать. Простой подход — включать timestamp в подпись и при проверке отклонять запросы старше N часов:
$timestamp = (int)$_GET['ts'];
if (time() - $timestamp > 86400) { // 24 часа
die('Link expired');
}
$expected = md5($orderId . $productId . $userId . $timestamp . SITE_KEY);
Для ограничения числа скачиваний нужна таблица с записями (order_id, product_id, user_id, downloads_count, max_downloads). При каждом скачивании счётчик увеличивается, при превышении — доступ блокируется.
Остатки и повторная покупка
Цифровые товары обычно не имеют физического остатка. В b_catalog_product для них рекомендуется QUANTITY_TRACE = 'N' и CAN_BUY_ZERO = 'Y' — тогда остаток не отслеживается и товар всегда доступен к покупке. При QUANTITY_TRACE = 'Y' с остатком 0 магазин заблокирует покупку, что для цифрового товара бессмысленно.
Сравнение стандартного и кастомного подхода
| Характеристика |
Стандартный подход |
Наш кастомный подход |
| Время доставки файла |
От 2-5 минут (письмо) |
Мгновенно (личный кабинет) |
| Защита от прямого доступа |
Нет |
Временные ссылки + nginx |
| Ограничение скачиваний |
Не поддерживается |
Кастомный счётчик |
| Стоимость реализации |
Входит в лицензию |
Рассчитывается индивидуально |
Типичные проблемы и их решения
| Проблема |
Решение |
| Файл скачивается без оплаты |
Защитить директорию nginx, генерировать временные ссылки |
| Ссылка работает бесконечно |
Добавить timestamp в токен, проверять время жизни |
| Письмо с файлом приходит с задержкой |
Выводить ссылку сразу в личном кабинете после оплаты |
Что входит в настройку защиты цифровых товаров
- Аудит текущего каталога: проверка типов товаров и расположения файлов.
- Создание защищённой директории
/upload/protected/ с конфигурацией nginx.
- Настройка обработчика оплаты
OnSaleOrderPaid.
- Реализация генерации временных ссылок с проверкой прав.
- Интеграция с личным кабинетом — вывод ссылки сразу после оплаты.
- Тестирование всех сценариев (оплата, истечение, превышение лимита).
- Документация по дальнейшей поддержке.
Технические детали реализации токена
Токен формируется как хеш по формуле md5(orderId . productId . userId . timestamp . secret_key). Secret_key хранится в конфиге и уникален для каждого сайта. Время жизни токена задаётся в настройках модуля — обычно 24 часа для большинства проектов.
Почему стоит доверить настройку нам?
Мы специализируемся на Битриксе с 2012 года (более 10 лет). Выполнили более 50 проектов с цифровыми товарами для e-commerce, образовательных платформ и сервисов доставки контента. Обработано более 500 000 скачиваний без единой утечки. Используем только штатные API (CommerceML, REST), не ломаем архитектуру. Даём гарантию на реализованный функционал.
Получите консультацию по настройке защиты цифровых товаров — мы поможем реализовать надёжное решение под ваш проект. Свяжитесь с нами, чтобы обсудить детали и сроки.
Что включает профессиональная установка 1С-Битрикс
Мы начинаем установку 1С-Битрикс с проверки innodb_buffer_pool_size. Дефолтное значение MySQL (128 МБ) — приговор для интернет-магазина с каталогом на 10 000+ товаров. Мы ставим 70–80% от доступной RAM на выделенном сервере, 50% на VPS. Одна эта настройка ускоряет сайт в 2–3 раза по сравнению с дефолтом. Оценим ваш проект за один день — получите консультацию. Обращайтесь, чтобы заказать установку под ключ с гарантией производительности.
Как выбрать хостинг и редакцию для установки 1С-Битрикс?
BitrixVM — виртуальная машина с предустановленным стеком: nginx + Apache, PHP-FPM, MySQL/MariaDB, Sphinx, Push‑сервер. Для VPS — лучший старт. Всё уже сконфигурировано под Битрикс, включая OPcache, логротацию и firewall. Управление через веб‑панель на порту 8890.
VPS/VDS — золотая середина. Минимальная конфигурация для среднего интернет‑магазина: 2 vCPU, 4 ГБ RAM, SSD. Оптимальная: 4 vCPU, 8 ГБ RAM. ОС: Ubuntu 22.04 или Debian 12. Если не BitrixVM — настраиваем стек вручную под задачу. Виртуальный хостинг — только для визиток и лендингов. Требования: PHP 8.0+, MySQL 5.7+ / MariaDB 10.0+, 512 МБ RAM, .htaccess. Хостинг‑партнёры 1С-Битрикс — гарантия совместимости. Выделенный сервер — для highload. Типичная архитектура: веб‑сервер отдельно, база данных отдельно, Redis/Memcached отдельно. На редакции «Энтерпрайз» — веб‑кластер с балансировщиком. Облако (Yandex Cloud, VK Cloud, Selectel) — когда нагрузка скачет: распродажи, сезонные пики. Автомасштабирование через Managed Kubernetes или просто вертикальное масштабирование VM.
Выбор редакции — не менее важный шаг. Частая ошибка: берут «Малый бизнес» для магазина, который через полгода вырастает до B2B с оптовыми ценами и тремя складами. Переход на «Бизнес» — доплата разницы, данные не теряются, но лучше предусмотреть заранее. Наши специалисты подберут редакцию под текущие задачи и с запасом на рост. Например, лицензия «Бизнес» (около 35 000 ₽) окупается за счёт мультисклада и обмена с 1С, а неправильный выбор приводит к потере до 30 000 ₽ ежемесячно на избыточных ресурсах.
| Редакция |
Для кого |
Ключевое ограничение |
| Старт |
Визитки, лендинги |
Нет инфоблоков 2.0, нет торгового каталога |
| Стандарт |
Корпоративные сайты |
Нет e‑commerce модуля |
| Малый бизнес |
Маленькие магазины |
1 тип цены, 1 склад, нет обмена с 1С |
| Бизнес |
Средние магазины, B2B |
Мультисклад, мультивалюта, CommerceML |
| Энтерпрайз |
Highload, кластер |
Веб‑кластер, CDN, мультисайтовость |
Какие настройки сервера критичны для 1С-Битрикс?
Веб‑сервер и PHP
nginx как reverse proxy + Apache (mod_php) или nginx + PHP-FPM напрямую. Второй вариант экономит память — Apache не нужен. Но некоторые модули Битрикс используют .htaccess, поэтому для совместимости иногда оставляем Apache. Конфигурация nginx: fastcgi_read_timeout 300 — для долгих операций (импорт из 1С), client_max_body_size 1024m — загрузка больших файлов. Закрываем доступ к .settings.php, .settings_extra.php, bitrix/.settings.php — там пароли к базе. Rewrite‑правила из urlrewrite.php — Битрикс сам генерирует, но при nginx + PHP-FPM нужно продублировать. PHP 8.0–8.2 с расширениями: mbstring, curl, gd, xml, json, opcache, redis/memcached. Ключевые настройки php.ini: opcache.memory_consumption=256, opcache.max_accelerated_files=20000, max_execution_time=300, memory_limit=512M, upload_max_filesize=100M, post_max_size=128M.
База данных и кэширование
MySQL/MariaDB. Ключевые параметры my.cnf: innodb_buffer_pool_size — 70–80% RAM, innodb_log_file_size=256M, tmp_table_size=256M, max_heap_table_size=256M, thread_pool_size — по количеству ядер CPU. Кодировка utf8mb4 обязательно, иначе эмодзи и спецсимволы ломаются. Redis предпочтительнее Memcached для Битрикс — поддерживает persistent connections и более надёжен. Настраиваем в .settings_extra.php:
'cache' => ['value' => ['type' => ['class_name' => '\\Bitrix\\Main\\Data\\CacheEngineRedis']]]
'session' => ['value' => ['mode' => 'default', 'handlers' => ['general' => ['type' => 'redis']]]]
SSL, почта и cron
SSL — Let's Encrypt через certbot в 90% случаев. Редирект HTTP → HTTPS (301), HSTS, TLS 1.2/1.3, OCSP Stapling. В Битрикс переключаем на HTTPS в настройках главного модуля. Почта: отказываемся от mail() — подключаем SMTP (Яндекс.Почта для домена, Mail.ru для бизнеса). Обязательно настраиваем SPF, DKIM, DMARC. Без SPF письма уходят в спам. Тестируем доставляемость через mail‑tester.com — оценка 9+/10. Cron: агенты Битрикс переводим на системный cron — * * * * * /usr/bin/php /var/www/bitrix/modules/main/tools/cron_events.php. На cron вешаем обмен с 1С (15–60 мин), поисковую переиндексацию, бэкапы (mysqldump + rsync, ротация 7+4), очистку временных файлов.
Безопасность и администрирование
Файловая система: владелец www-data, директории 755, файлы 644, upload 775. nginx блокирует доступ к файлам конфигурации. Включаем Проактивную защиту Битрикс — WAF, контроль активности (блокировка после 5 неудачных попыток), проверку целостности ядра. Для админ‑панели: двухфакторная аутентификация через Google Authenticator или OTP, ограничение доступа по IP через nginx для параноиков.
Сколько времени занимает установка 1С-Битрикс и настройка?
| Задача |
Срок |
| Установка на виртуальный хостинг |
2–4 часа |
| Установка на VPS с настройкой стека |
1–2 дня |
| Установка на dedicated с проектированием архитектуры |
2–5 дней |
| SSL + почта + cron + безопасность |
1–2 дня |
| Настройка бэкапов и мониторинга |
0.5–1 день |
Проверка после установки (пошаговый чек‑лист)
-
Монитор производительности (
/bitrix/admin/perfmon_panel.php) — целимся в 30+ баллов. Ниже 20 — есть серьёзные проблемы с конфигурацией.
-
Проверка системы — автоматическая проверка всех параметров. Красные пункты — исправляем обязательно, жёлтые — по ситуации.
-
Сканер безопасности — проверка на типичные уязвимости.
-
PageSpeed Insights — TTFB < 200мс на VPS, LCP < 2.5с.
-
Тестовый обмен с 1С — если планируется интеграция, проверяем CommerceML‑обмен до запуска.
Дополнительно проверяем версии ПО, настройки кэширования, работу cron, SSL‑сертификат, SPF/DKIM/DMARC, права доступа, удаление дефолтных пользователей и страниц. Для проектов с 54‑ФЗ убеждаемся, что настроена фискализация через ОФД‑провайдера.
Что входит в работу (deliverables)
- Полностью настроенный сервер под 1С-Битрикс с оптимизацией MySQL, PHP, nginx.
- Установленная и активированная лицензия нужной редакции.
- SSL‑сертификат, почтовые настройки, cron и бэкапы.
- Документация: все параметры конфигурации, доступы, cron‑задачи.
- Обучение контент‑менеджера: как заходить в админку, добавлять товары, загружать изображения.
- Поддержка после установки в течение 30 дней — консультации по настройкам.
Почему стоит доверить установку профессионалам?
Неправильная установка — потеря времени и денег. Мы видели проекты, где магазин на «Старте» не мог выдержать 50 посетителей, потому что не был настроен innodb_buffer_pool_size. После переноса на VPS с правильной конфигурацией сайт «полетел». Неправильная конфигурация может обходиться в 30 000 ₽ ежемесячно из‑за избыточного потребления ресурсов. Вы получаете готовую архитектуру, которая масштабируется. Закажите установку 1С-Битрикс под ключ — и получите надёжную платформу для роста бизнеса. Свяжитесь с нами — рассчитаем стоимость под ваш проект. Опыт более 7 лет, реализовано 120+ проектов на Битрикс, включая highload‑магазины с миллионными каталогами. Обращайтесь — мы поможем настроить Битрикс под ваш проект.