Подпись данных посетителя: зачем нужен секрет и как его посчитать
2 мин чтения · обновлено 16.08.2026
Данные вошедшего пользователя виджет принимает только с подписью. Подпись подтверждает, что имя и почту прислал ваш сервер, а не подставил сам посетитель.
Почему без подписи нельзя
Всё, что передаёт страница, посетитель видит и может изменить через инструменты разработчика. Без проверки он назвался бы чужим адресом, и дальше:
- оператор поверил бы имени «из системы» — оно выглядит достовернее, чем то, что человек сам вписал в форму;
- разговор привязался бы к чужому контакту и попал в чужую историю;
- письма о новых ответах ушли бы на произвольный адрес.
Поэтому неподписанные данные просто игнорируются: разговор идёт анонимно, как будто их не передавали.
Где взять секрет
Настройки виджета, блок «Секрет подписи посетителя». Нажмите «Показать», если он уже создан, или «Сгенерировать».
Секрет доступен только владельцу рабочей области. Держите его на сервере: в браузер, в мобильное приложение и в публичный репозиторий он попадать не должен.
Как считать подпись
Подписывается идентификатор пользователя — тот же, что вы передаёте в
userId. Если идентификатора нет, подписывайте почту в нижнем регистре.
PHP:
$hash = hash_hmac('sha256', (string) $user->id, $secret);
Node.js:
const hash = crypto.createHmac('sha256', secret).update(String(user.id)).digest('hex');
Python:
hash = hmac.new(secret.encode(), str(user.id).encode(), hashlib.sha256).hexdigest()
Готовое значение отдайте на страницу вместе с именем и почтой.
Почему подписывается только идентификатор
Имя человек меняет в профиле, почту тоже. Если подписывать всё сразу, подпись пришлось бы пересчитывать при каждом изменении профиля, и любая рассинхронизация ломала бы опознание.
Смена секрета
Кнопка «Сгенерировать» выдаёт новый секрет, старый перестаёт действовать сразу. Обновите его на сервере в тот же момент, иначе посетители на время станут анонимными.
Проверка
Зайдите в кабинет под тестовым пользователем и напишите в чат. В дашборде обращение должно быть от его имени и почты, а не от псевдонима. Если видите псевдоним — подпись не сошлась: чаще всего подписывают не то поле (например, почту вместо идентификатора) или используют старый секрет.