
О сайте
Линейки OO Dental для ортодонтов и закупщиков. У каждого изделия есть характеристики и варианты цен, каталоги можно скачать, порядок заказа описан отдельно.
Что сделано
- Рядом с ценами показана экономия относительно розницы и видна выгода закупки большего объёма.
- Нажатие на подходящую цену переносит выбранное условие покупки в дальнейшее оформление.
- Квиз помогает начать с понятных вопросов о цели и объёме закупки, даже если клиент ещё не определился с изделием.
- Кнопка запроса регистрационных документов сама подставляет нужный текст обращения.
- 3D-демонстрация челюсти со всеми видами брекет-систем, чтобы сразу увидеть, как это будет выглядеть на пациенте.
- Поиск инструментов по названию, модели, артикулу и описанию. Найденные позиции можно сразу собрать в одну заявку с нужным количеством.
Система управления сайтом
- Проверка логики цен: система не позволяет сохранить оптовую цену выше цены для клиники или розницы.
- Связанное обновление стоимости: изменения применяются к карточкам, таблицам и структурированным данным; экономия относительно розницы пересчитывается автоматически.
- Редактор большого списка инструментов: поиск по модели и артикулу ускоряет обслуживание конкретных позиций.
- Разделение черновика и публикации: изменения можно проверить на страницах до показа посетителям.
- Возврат к прежней версии: сохраняются 20 предыдущих публикаций с возможностью восстановления.
- Защита панели: ограничение попыток входа, защищённые сессии, проверка команд изменения и защита от перезаписи правок из другой вкладки.
Безопасность
Перед сдачей проекта клиенту был проведён внутренний аудит безопасности методом «серого ящика».
Результат: Критических, высоких и средних уязвимостей в финальной сборке проекта не обнаружено.
Защита от SQL-инъекций и инъекций команд
- Проверка: Автоматизированный перебор параметров с помощью
sqlmapи ручной фаззинг форм ввода. - Как реализована защита: Исходный код полностью исключает конкатенацию строк в SQL-запросах. Использовано встроенное ORM-экранирование фреймворка. Доступ приложения к СУБД ограничен правами
Data Reader/Writerбез доступа к системным таблицам.
Защита от XSS
- Проверка: Попытки внедрения вредоносных JS-скриптов во все пользовательские текстовые поля.
- Как реализована защита: Внедрён строгий шаблонизатор с автоэкранированием HTML-сущностей. На уровне веб-сервера развёрнута жёсткая политика Content Security Policy (CSP), запрещающая исполнение любого стороннего или небезопасного встроенного (inline) кода.
Безопасность компонентов
- Проверка: Анализ состава программного обеспечения (SCA) инструментами
SnykиDependency-Check. - Как реализована защита: Все используемые пакеты зафиксированы на стабильных версиях без известных уязвимостей из базы NVD. Настроено автоматическое уведомление о выходе патчей безопасности для зависимостей.
Изоляция админки
- Как реализована защита: Админка полностью вынесена на отдельный поддомен, закрыта от индексации поисковыми роботами и защищена от брутфорса механизмом
Fail2ban(блокировка IP после 5 неверных попыток). Вход в админ-панель требует обязательной двухфакторной аутентификации (2FA / TOTP).
Устойчивость к DDoS и нагрузкам
- Проверка: Стресс-тестирование утилитой
k6для имитации легитимного наплыва пользователей и атак типа HTTP-флуд. - Как реализована защита: На уровне Nginx настроены лимиты запросов (
limit_req), отдающие ошибку 429 при превышении лимитов с одного IP. Архитектура подготовлена к бесшовной интеграции с внешними сервисами (например, Cloudflare / Qrator) для фильтрации L4/L7-трафика.
