Как защититься от XSS и SQL-инъекций в личных кабинетах – встроенная защита платформы

Время чтения - 5 мин.
Дата публикации 06.07.2026

«Наш сайт взломали» — фраза, от которой у любого владельца бизнеса холодеет внутри. Потеря данных клиентов, кража паролей, подмена счетов. Репутация рушится за минуты. Для малого бизнеса взлом часто означает закрытие.

Хорошая новость: большинства атак можно избежать, если изначально заложить правильную архитектуру. Плохая новость: многие самописные системы и даже типовые CMS имеют уязвимости. В Falcon Space безопасность встроена на уровне ядра. Расскажу, от чего мы защищаем и что ещё можете сделать вы.

Две главные угрозы для сайта с личными кабинетами

SQL-инъекции — злоумышленник вставляет SQL-код в поле ввода (например, в строку поиска), чтобы выполнить произвольный запрос к базе данных. Может прочитать чужие пароли, удалить таблицы, украсть данные.

XSS (межсайтовый скриптинг) — злоумышленник вставляет JavaScript-код в комментарии, отзывы или поля профиля. Когда другой пользователь открывает страницу, этот код выполняется. Может украсть сессию, перенаправить на фишинговый сайт, подменить форму оплаты.

Обе атаки — в топе веб-уязвимостей последних лет.

Как Falcon Space защищает от SQL-инъекций

В классическом веб-приложении (PHP, Java, C#) программист часто строит SQL-запросы склеиванием строк: SELECT * FROM users WHERE id = ' + userId + '. Если злоумышленник передаст userId = 1; DROP TABLE users; --, он может уничтожить базу.

В Falcon Space вся ваша бизнес-логика — это хранимые процедуры. Они вызываются с параметрами, которые строго типизированы и не могут быть интерпретированы как SQL-код. Пример:

CREATE PROCEDURE [app].[get_user]
    @user_id int
AS
BEGIN
    SELECT * FROM users WHERE user_id = @user_id;
END

Даже если передать в @user_id строку, SQL Server выдаст ошибку преобразования типов и ничего страшного не произойдёт.

Важно: если вы пишете свои процедуры, никогда не используйте динамическое выполнение SQL (sp_executesql с конкатенацией строк). Только параметризованные запросы. Этому правилу следуют все наши разработчики, и мы рекомендуем его вам.

Как Falcon Space защищает от XSS

XSS возникает, когда сайт выводит данные, введённые пользователем, без экранирования. Например, пользователь в поле «Имя» написал <script>alert('XSS')</script>, и этот код выводится на странице другого пользователя.

В Falcon Space все данные, выводимые через стандартные компоненты (таблицы, формы), автоматически экранируются — теги превращаются в &lt; и &gt;. Пользовательский скрипт не выполнится.

Если вы выводите данные через свой HTML-код (например, в кастомном лендинге), вы должны экранировать их сами. Для этого в платформе есть функция html_encode. Или просто не позволяйте пользователям вводить HTML-теги — добавьте валидацию.

У нас также есть глобальная настройка, которая фильтрует все пользовательские поля ввода, удаляя потенциально опасные теги. Рекомендуем её включить.

Ролевая модель — защита от чужих данных

Ещё одна частая уязвимость: пользователь с ролью «Клиент» может, подставив ID в URL (например, /order/123 вместо /order/456), посмотреть данные другого клиента.

В Falcon Space мы защищаемся на уровне данных: в SQL-процедуры передаётся параметр @username (текущий пользователь), и процедура фильтрует данные, возвращая только те записи, которые принадлежат этому пользователю. Пример:

CREATE PROCEDURE [app].[get_my_orders]
    @username nvarchar(100)
AS
BEGIN
    SELECT * FROM orders WHERE customer_username = @username;
END

Даже если злоумышленник угадает ID чужого заказа, процедура не вернёт его, потому что @username не совпадёт.

Такой подход называется «row-level security» на уровне приложения. Он надёжен и не требует сложных настроек.

Что ещё нужно сделать вам (ваша зона ответственности)

Платформа даёт инструменты, но некоторые меры безопасности зависят от вас:

  • HTTPS — обязательно! Без шифрования пароли и данные могут быть перехвачены. Настройте SSL-сертификат (бесплатный от Let's Encrypt).
  • Сложные пароли — требуйте от сотрудников и клиентов пароли длиной не менее 8 символов, с цифрами и буквами разного регистра. Можно добавить двухфакторную аутентификацию (через SMS или Telegram).
  • Регулярные бэкапы — даже если взломают, вы откатитесь на чистую версию за 15 минут. Настройте автоматическое резервное копирование базы данных раз в день.
  • Обновления сервера — держите Windows Server и SQL Server в актуальном состоянии, закрывайте уязвимые порты (оставьте только 80 и 443).
  • Минимизация прав — не давайте сотрудникам лишних прав. Менеджеру не нужен доступ к таблице users с паролями.

Безопасность — это не тумблер «включить», а процесс. Но правильная архитектура решает 80% проблем. В Falcon Space она правильная.

Как проверить свой сайт на уязвимости

Вы можете заказать пентест (тест на проникновение) у специалистов. Стоит от 30 до 100 тыс. руб. Они попробуют взломать ваш сайт и выдадут отчёт с уязвимостями.

Или вы можете провести базовую проверку сами:

  • В поле поиска или отзыва попробуйте ввести <script>alert(1)</script>. Если появляется окно с сообщением — есть XSS.
  • В поле ввода попробуйте ввести ' OR '1'='1. Если сайт показывает все записи (например, все заказы) — есть SQL-инъекция.

Если вы нашли такие уязвимости — срочно обратитесь к разработчику.

Мы проводим аудит безопасности для проектов на Falcon Space (входит в гарантийное обслуживание для клиентов, купивших лицензию). Проверяем процедуры на фильтрацию по @username, наличие экранирования, настройки сервера. Если вы хотите заказать аудит отдельно — стоимость 20-30 тыс. руб.

Лучше потратить небольшие деньги на профилактику, чем потом платить штрафы и терять клиентов.

Насколько полезной была статья?
Falcon Space, автор блога

Автор статьи - Руслан Раянов

Cоздатель платформы Falcon Space
Запрос расчета стоимости веб-проекта на базе Falcon Space
Если видео Youtube плохо грузится, то попробуйте найти видео в ВК видео на канале Falcon Space
Сайт использует Cookie, Яндекс Метрику. Используя сайт, вы соглашаетесь с правилами сайта. См. Правила конфиденциальности и Правила использования сайта OK