Racelink
Документация · Безопасность и разрешения

// Документация · Безопасность

Безопасность и разрешения

Игроки ставят оверлеи незнакомых авторов из Мастерской. Поэтому Racelink ограничивает каждый оверлей, а всё лишнее оверлей получает только с согласия игрока.

Ограничения для каждого оверлея

Оверлей из Мастерской — это веб-страница, которую написал не Racelink. Поэтому ей можно только то, что нужно, чтобы нарисовать себя.

Отдельный адрес
Каждый оверлей открывается на своём адресе, отдельно от Racelink и от других оверлеев. Их данные и страницы ему недоступны.
Только свои файлы
Скрипты, стили, шрифты и картинки загружаются только из пакета оверлея. Чужие скрипты не запускаются, даже если доступ в интернет разрешён.
Без фреймов, форм и плагинов
Оверлей не может встроить другой сайт, отправить форму или подключить плагин.
Только Racelink
Оверлей может подключаться только к Overlay API на этом компьютере. Интернет закрыт, пока игрок не разрешит адреса, которые оверлей указал.

Overlay API отвечает только оверлеям и страницам с вашего компьютера во время разработки. Обычный сайт, открытый в браузере игрока, прочитать его телеметрию не может.

Что оверлей получает без разрешения

Телеметрию игры, свои настройки, демо-данные, а также карты трасс, логотипы машин и флаги из Racelink (Карты трасс, логотипы и флаги). Почти любому оверлею этого хватает.

Что нужно разрешение игрока

Всё более личное или выходящее за пределы Racelink оверлей получает только с разрешения. Оверлей перечисляет нужные разрешения в манифесте. Когда игрок добавляет оверлей, он видит окно с отдельной галочкой для каждого разрешения. Потом выбор можно изменить в разрешениях оверлея.

media
Музыка, которая играет на компьютере: название трека, исполнитель и обложка (поле system.media). Без разрешения в поле null.
steamMessages
Личные сообщения, которые друзья пишут игроку в Steam (steam.chat). Без разрешения в steam.chat.access значение "denied", и сообщения не приходят.
internet
Запросы по HTTPS и WSS к перечисленным адресам, до 20 штук, например api.example.com или *.example.com. Подробнее — Данные из интернета.
racelink.overlay.json
"permissions": { "media": true, "internet": ["api.example.com"] }
  • Разрешение даёт ровно то, что в нём названо. Если в Racelink появятся новые личные данные, для них будет новое разрешение: то, что игрок уже разрешил, само не расширится.
  • Если новая версия оверлея просит больше разрешений, игрока спросят снова. Пока он не согласится, новое разрешение закрыто.
  • Демо-данные доступны всегда, чтобы превью выглядели полностью.
  • Встроенным оверлеям Racelink разрешено всё.

Как узнать, что разрешено

Игрок может разрешить всё, часть или ничего. Объект overlay.permissions говорит, что разрешено сейчас, а событие permissions приходит, когда игрок меняет выбор. Оверлей должен показывать что-то полезное в любом случае.

src/main.ts
const showMusic = (allowed: boolean): void => {
music.hidden = !allowed;
};
showMusic(overlay.permissions.media);
overlay.on('permissions', (permissions) => showMusic(permissions.media));
src/App.tsx
const [permissions, setPermissions] = useState(overlay.permissions);
useEffect(() => overlay.on('permissions', setPermissions), [overlay]);

return permissions.media ? <NowPlaying media={telemetry.system.media} /> : null;

Токен экземпляра

Racelink открывает каждый экземпляр оверлея со специальным ключом — токеном — в адресе страницы. SDK передаёт его Racelink и в ответ получает настройки и разрешения этого экземпляра. Если страницу открыть без действующего токена, например вручную из файлов пакета, она получит телеметрию и демо-данные, но не настройки и не разрешения. Работать с токеном самому не нужно: SDK делает это за вас.

Как сделать оверлей, которому доверяют

  • Просите только нужные разрешения: лишнее разрешение настораживает игроков.
  • В описании в Мастерской объясните, зачем оверлею каждое разрешение.
  • Не кладите в пакет секреты. Любой может скачать оверлей из Мастерской и прочитать его код, включая ключи API. Используйте сервисы, которые рассчитаны на запросы прямо из браузера.
  • Телеметрия и настройки остаются на компьютере игрока. Если оверлей что-то отправляет на сервер, напишите в описании, что именно и зачем.