СВОЙНаш собственный продукт

Аудит безопасности tarasovvitalii.com: восемь находок, восемь исправлений

Проверка безопасности изнутри для сайта-портфолио основателя, tarasovvitalii.com: чат, API сообщений, сервер и 15 демо-концептов. Мы нашли восемь проблем, одна из них — внедрение скрипта высокого риска на том домене, где чат хранит сессию входа, исправили все восемь и перепроверили каждое исправление.

Аудит безопасности · свой сайт · 2026

Открыть проект
Типографская обложка на чёрном фоне: «8 found. 8 fixed.» над четырьмя находками аудита tarasovvitalii.com, у каждой — уровень риска и лаймовая метка «Fixed».
находок по безопасности, все исправлены: 1 высокого риска, 1 среднего и 6 низкого
8
демо-страниц открываются с новой политикой безопасности без единого нарушения
119
тестов API сообщений проходят, включая новые правила
48 / 48
известных уязвимостей в npm-зависимостях сайта и API
0

Задача

tarasovvitalii.com — не только статичные страницы. На сайте работает чат на VITON ID (Firebase Authentication и Firestore), небольшой API на Node, который хранит сообщения из формы и отправляет письма, сервер nginx в Docker и копии 15 концепт-сайтов в разделе /demos/. Посетитель, который входит, чтобы написать основателю, доверяет всему этому сразу, поэтому 28 сентября 2026 года мы проверили сайт изнутри — так же, как проверили бы сайт клиента перед запуском.

Для каждой части вопрос был вопросом злоумышленника: что с ней может сделать посторонний и чего это будет стоить владельцу? Находка засчитывалась, только когда мы её воспроизвели, а исправление — только когда та же атака против него не сработала.

Что мы сделали

В проверку вошли каждый маршрут API и проверка токенов, правила Firestore вместе с 39 тестами в эмуляторе, конфигурация nginx и Docker Compose, npm-зависимости сайта и API, интерфейс чата и код всех 15 демо. Вместо атак на рабочий сервер мы подняли те же контейнеры локально — nginx и API с рабочими настройками — и пробовали каждую атаку там.

Самая серьёзная находка оказалась не на самом сайте, а в демо. Концепт магазина Oriva вставлял параметр адреса ?cat= в страницу как HTML, поэтому собранная ссылка запускала скрипт на tarasovvitalii.com — на том домене, где чат хранит сессию Firebase: одного клика владельца хватило бы, чтобы открыть переписку. Остальные 14 демо только сравнивают параметры адреса с известными значениями.

Как это устроено

Исправления по каждой находке. Демо Oriva теперь принимает только известные категории и сортировки. У /demos/ появилась своя политика безопасности (Content-Security-Policy), а Leaflet — библиотека карт, которую 52 демо-страницы берут с CDN, — закреплён хэшами целостности. Редирект /demos/<id> собирается по строгому шаблону, а не повторяет запрошенный путь. Адреса почты, через которые в ссылку «Ответить» у владельца могли попасть скрытая копия (BCC) или текст, отклоняются, а из имён убираются символы смены направления текста.

Остальное — на сервере: общий дневной лимит на сохранённые заявки (по умолчанию 500) поверх лимитов на один адрес; API сообщений работает от непривилегированного пользователя на файловой системе только для чтения, все возможности Linux отключены; версия nginx скрыта из ответов, ветка — текущая стабильная; HSTS — заголовок, который держит браузер на HTTPS, — отдаётся и на www и распространён на поддомены. Новые тесты API проверяют отклонённые адреса, удалённые символы и лимит.

Что есть сейчас

Восемь находок, восемь исправлено: одна высокого риска, одна среднего и шесть низкого. Код, который срабатывал в старом демо, в новом ничего не делает, а запрос, который раньше подставлял заголовок Set-Cookie, теперь получает обычный 404. Все 119 демо-страниц открываются с новой политикой без единого нарушения, тесты API проходят 48 из 48 вместе с новыми правилами, а npm audit не находит известных уязвимостей в зависимостях сайта и API.

Проверено и в порядке: проверка токенов Firebase (только RS256, обязательный идентификатор ключа, проверка аудитории, издателя и срока действия), правила Firestore, при которых никто не читает чужую переписку и не пишет от имени владельца, шаблоны писем, где экранировано каждое значение, логи без токенов, почты и IP-адресов и чат, который никогда не вставляет текст посетителя как HTML. На живом сайте 28 сентября 2026 года заголовки ответов не показывают версию сервера, HSTS с поддоменами стоит на обоих адресах, политика демо — на /demos/, а запрос с подменой заголовка получает 404.

Чего это не доказывает

Это наш собственный сайт, а не работа для клиента. Проверку провела сама студия по исходному коду; это не независимый пентест и не сертификат. Атаки воспроизводились на локальной копии рабочих контейнеров, а не на живом сервере; на живом адресе перепроверены только заголовки ответов и редирект.

Результат относится к тому, что мы проверили 28 сентября 2026 года: новый код, новые зависимости или новые демо требуют такой же проверки. Демо по-прежнему живут на домене сайта, поэтому новая политика ограничивает, до чего дотянется внедрённый код, но не изолирует его; полностью изолировать демо можно, только перенеся их на отдельный домен.

Как проверить портфолио веб-студии

Услуги, которые показывает кейс

Опишите задачу на странице услуги — письменный объём, срок и цена придут в течение одного рабочего дня.

Обсудить похожий проект

Другие кейсы

Все кейсы
Русская страница VITON13 SCHOOL: белый знак-глобус с буквой V над заголовком VITON13 SCHOOL, логотип VITON13 в шапке

СВОЙНаш собственный продукт

Айдентика брендов VITON13

Айдентика · 5 знаков · 2026

Знаки собственных брендов VITON13 в том виде, в каком они существуют в коде сайта: два рисованных знака-глобуса с буквой V, три словесных знака, набранных шрифтом, и один акцентный цвет — небесно-голубой #5ac8ff на чёрном. В кейс входит и VITON XIII — линия из пяти ароматов.

Читать кейс
Изображение создано ИИ: мужчина в светло-бежевом костюме и женщина в коричневом поло и кремовых брюках идут по залитому солнцем каменному двору

СВОЙНаш собственный продукт

Стайлинг Old Money

Стайлинг · Old Money · 2026

Old Money — собственная марка одежды VITON13, а не клиентский проект. Мы собрали из её 16 товаров три мужских образа с ценой, добавили к каждому товару памятку по уходу на пяти языках и выпустили в VJOURNAL статью о капсульном гардеробе на небольшой бюджет.

Читать кейс
Три ключевых визуала VITON XIII BEAUTY, созданных ИИ, рядом на чёрном фоне: флакон аромата в мёде с персиками и пчелой, три флакона ухода пастельных цветов и тёмно-синий тюбик бальзама для губ среди ежевики

КОНЦЕПТКонцепт — не заказ клиента

VITON XIII BEAUTY

Концепт · 6 визуалов, созданных ИИ · 2026

VITON XIII BEAUTY — концепт, а не запущенная линейка: бьюти-продолжение парфюмерного бренда из собственного магазина VITON13, показанное в шести ключевых визуалах. У каждой категории свой мир — мёд для аромата, холодное стекло и пастель для ухода, тёмные ягоды для губ, — а вместе их держат название VITON XIII BEAUTY и спокойные лаконичные этикетки. Все изображения созданы ИИ.

Читать кейс