Безопасность
Ключ API
- Ключ хранится только на вашем сервере, в переменной окружения или в хранилище секретов. Не кладите его в код страницы, в мобильное приложение или в репозиторий.
- У нас хранится только хэш ключа. Если ключ потерян, мы выпускаем новый, а старый отзываем.
- Ключей может быть несколько, например для prod и staging. Каждый отзывается отдельно.
- Ключ можно узнать по видимой части
wbk_<8 символов>: её мы называем в переписке вместо самого ключа.
Ссылки участников
- Ссылка — это пропуск конкретного человека в конкретный урок с конкретной ролью. Подделать её нельзя: она подписана нашим ключом.
- Ссылка живёт от 15 минут до 12 часов. Выдавайте её прямо перед входом и только этому человеку, не рассылайте заранее.
- Если человек передаст ссылку другому, тот войдёт под его именем. Поэтому ссылки для преподавателя давайте только преподавателю.
- После архивации урока (
DELETE /lessons/{id}) все его ссылки перестают открываться.
Домены
- Урок показывается во фрейме только на ваших доменах. Мы ставим заголовок
Content-Security-Policy: frame-ancestors <ваши домены>для каждой ссылки отдельно. Чужой сайт не сможет показать урок у себя и подтолкнуть человека к нажатию на нём (clickjacking). - Кроме того, страница урока сама проверяет, какой сайт её показывает (
location.ancestorOrigins, в других браузерах — адрес, с которого пришли). Если сайта нет в вашем списке, урок не открывается. Это работает и в браузере, где расширение вырезает заголовки CSP. - События урока уходят только на ваши домены, а команды принимаются только с них.
- Домены указываются полностью:
https://school.example.ru. Поддомены добавляются отдельно.
Cookie и хранилище
Внутри фрейма урок не использует cookie: человек входит только по ссылке. Если браузер запрещает фрейму локальное хранилище, урок всё равно работает. Без хранилища просто не запоминаются тема оформления и расположение панелей.
Вебхуки
- Проверяйте подпись по сырому телу запроса и отклоняйте запросы старше 5 минут: так повтор старого запроса не пройдёт.
- Мы отправляем вебхуки только на
httpsи только на публичные адреса. Перенаправлениям мы не следуем.
Данные
- Мы храним: имя участника из ссылки, хэш вашего идентификатора пользователя, содержимое доски и чата урока, минуты.
- Ваш идентификатор пользователя у нас не хранится, только его хэш. Email и телефоны мы не получаем.
- Видео и звук урока не записываются, пока преподаватель сам не включит запись.
- Данные хранятся в России.
- По закону (152-ФЗ) оператор персональных данных ваших пользователей — вы, а мы обрабатываем их по вашему поручению. Шаблон поручения: dpa-template.md.
Если что-то случилось
Если ключ утёк, ссылки рассылаются не тем людям или пришли подозрительные вебхуки, напишите на help@rismik.ru. Мы отзовём ключ, при необходимости приостановим доступ платформы и разберём журнал.