Щоб використовувати будь-який сторонній інструмент Figma, ви генеруєте Personal Access Token у налаштуваннях Figma і вставляєте його в інструмент. Це стандартна умова. Кожна інтеграція Figma його запитує.

Те, що більшість людей не усвідомлюють до кінця: цей токен читає не "один файл". Він читає кожен файл, до якого ваш акаунт має доступ. Кожен приватний файл. Кожну організаційну бібліотеку. Кожен спільний проєкт. Стандартний скоуп PAT Figma — це вся поверхня читання вашого акаунту.

Для окремого дизайнера з особистим акаунтом це помірний ризик. Для штатного дизайнера підприємства зі спільними дизайн-бібліотеками, що містять невипущені продукти, брендові активи та внутрішній інструментарій — це суттєво. І для таких дизайнерів "я вставив свій токен Figma в цей інструмент, який знайшов" — це інцидент безпеки.

figmascope спроєктований так, щоб цей інцидент не стався.

Що надає PAT Figma

Автентифікація API Figma базується на PAT. Токен автентифікується як ви. API не застосовує обмеження доступу на рівні токена до конкретних файлів — він застосовує доступ до файлів на основі прав вашого акаунту. Якщо ваш акаунт може переглядати файл — PAT може читати його через API.

Стандартний скоуп PAT надає доступ на читання до:

У 2023 році Figma запровадила більш обмежений тип токенів — токени, де можна вибирати, які скоупи надати. Але UI за замовчуванням — широкий токен, і більшість інструкцій кажуть генерувати токен без вказання скоупу. На практиці більшість PAT, що гуляють в буфері обміну дизайнерів, — це токени повного читання.

Модель загроз для інструментів, що приймають PAT

Інструмент, що приймає PAT Figma і має бекенд, стикається з конкретною загрозою: бекенд зберігає ваш токен (щоб звертатися до Figma від вашого імені), і це сховище є ціллю. Якщо бекенд скомпрометовано — скомпрометовано кожен PAT, що там зберігається. При витоку бази даних бекенду — зламано доступ кожного користувача до Figma.

Це не гіпотетично. Витоки сховища OAuth-токенів траплялися з багатьма сервісами. Схема така: користувач надає доступ, сервіс зберігає токен, сервіс зламано, зловмисник ексфільтрує токени, зловмисник тепер має доступ до всього, до чого токени мають доступ. Для токенів Figma на підприємстві "все, до чого вони мають доступ" — це повна дизайн-система.

Бекенд-інструменти мають вирішувати цю проблему. Хороші — вирішують: шифрування в стані спокою, короткочасні токени, воркфлоу повторної автентифікації, журнал аудиту. Вирішити це правильно — інженерна задача корпоративного рівня безпеки. Більшість інструментів не вирішують це правильно; вони просто ще не були зламані.

Найбезпечніше сховище токенів — взагалі ніяке сховище. Якщо ваша архітектура ніколи не зберігає токен — нема чого зламувати. Це архітектурний вибір figmascope — і це не просто функція, це вся модель безпеки.

Архітектура figmascope

figmascope повністю виконується у браузері. Немає бекенд-сервера. Немає бази даних. Немає управління сесіями, облікових записів, шару зберігання токенів. Застосунок — статичний бандл HTML/CSS/JS, що роздається з CDN. Коли ви його використовуєте, обчислення відбуваються у вашій вкладці браузера. Нічого не надсилається на сервери figmascope, бо серверів figmascope немає.

Потік PAT виглядає так:

  1. Ви вводите PAT у поле вводу.
  2. Значення зберігається у JavaScript-змінній замикання — звичайне JS-прив'язання let всередині модуля застосунку.
  3. Воно ніколи не записується у localStorage. Ніколи у sessionStorage. Ніколи не встановлюється як cookie. Ніколи у indexedDB. Ніколи не надсилається на жодну URL, крім двох ендпоінтів API Figma.
  4. Під час експорту токен передається як заголовок X-Figma-Token у fetch()-викликах до api.figma.com та CDN Figma для зображень.
  5. Коли ви закриваєте або перезавантажуєте вкладку, JS-пам'ять звільняється. Токен зникає.

Це повний життєвий цикл. Без збереження будь-де. Без мережевої передачі, крім безпосередньо до Figma.

Примусове застосування Content Security Policy

Щоб властивість "надсилається лише до Figma" була примусово застосовуваною, а не просто задекларованою, figmascope розгортає Content Security Policy, що обмежує connect-src двома дозволеними хостами:

connect-src 'self'
  https://api.figma.com
  https://figma-alpha-api.s3.us-west-2.amazonaws.com;

CSP примусово застосовується браузером. Навіть за наявності вразливості до ін'єкції скриптів, браузер заблокував би будь-яку спробу надіслати токен на сторонній хост. Мережеві запити до будь-якого іншого призначення зазнають невдачі на рівні браузера, ще до залишення машини.

Це глибокий захист. Код застосунку вже не надсилає токен куди-небудь ще. CSP унеможливлює відправку токена куди-небудь ще навіть якби код спробував.

Шлях відновлення

Оскільки токен знаходиться лише в пам'яті, відновлення тривіальне: закрийте вкладку. Токен зник. Жодного кроку з відкликанням, жодного "видалити акаунт", жодного "вийти". Вкладка закрита = токен зник.

Це також правильна поведінка з точки зору операційної безпеки. Короткочасні вікна доступу до облікових даних мінімізують ризик. Ви відкриваєте figmascope, вставляєте PAT, виконуєте експорти, закриваєте вкладку. Вікно, в якому PAT доступний — це точно тривалість тієї сесії браузера. Порівняйте з бекенд-інструментом, де ваш токен може зберігатися місяцями, активним і доступним, поки ви явно його не відкличете.

Рекомендації незалежно від інструменту

Навіть з архітектурою figmascope в пам'яті, гігієна PAT має значення:

Використовуйте обмежений токен. Figma тепер підтримує токени з явними скоупами. Для операцій лише читання, як-от експорти figmascope, достатньо токена лише на читання, що обмежує радіус ураження у разі витоку. Генеруйте токен лише зі скоупом file_read, а не широким за замовчуванням.

Відкликайте токени, якими не користуєтеся активно. У налаштуваннях Figma відображаються всі активні PAT. Токени, що ви генерували для завершеного проєкту, слід відкликати. Токен, згенерований для figmascope шість місяців тому і невикористаний відтоді, можна відкликати і перегенерувати при наступній потребі.

Ніколи не вставляйте токени в інструменти з бекендом, не перевіривши їх безпекову позицію. Запитайте: чи є у цього сервісу бекенд? Якщо так — де і як він зберігає мій токен? Якщо відповідь не влаштовує або її немає — вважайте це ризиком. Це стосується кожного інструменту Figma, а не лише figmascope.

Корпоративні користувачі: де можливо, використовуйте спільні/сервісні акаунти. Якщо ваша організація може створити сервісний акаунт Figma з доступом лише на читання до конкретних проєктів, генерація PAT із цього акаунту замість особистого обмежує доступне лише цими проєктами.

Що ми не стверджуємо

Браузерна архітектура figmascope мінімізує поверхню атаки для серверного крадіжки облікових даних. Вона не усуває всі занепокоєння з безпеки:

Ми не стверджуємо, що це замінник корпоративного аудиту безпеки. Ми стверджуємо: архітектура робить конкретний клас атак — злам серверної бази даних токенів — структурно неможливим, усунувши сервер. Це суттєве скорочення поверхні атаки, а не повний імунітет.

Чому відкритий код тут важливий

Заяви про безпеку безцінні без верифікованості. figmascope — MIT-ліцензований і повний вихідний код на GitHub. Заяви в цій статті — немає запису в localStorage, немає передачі на бекенд, заголовки CSP — усі верифікуються читанням коду. app.js показує відсутність записів в API сховища браузера. Файл заголовків показує CSP. Виклики fetch показують точно, які URL отримують токен.

Якби ми брехали про щось із цього — знайти брехню зайняло б тридцять хвилин. Саме в цьому сенс. Відкритий код — не лише вибір ліцензії; для інструменту, що обробляє облікові дані, це єдина чесна основа для заяв про безпеку.

Ви повинні верифікувати інструменти, що обробляють ваші облікові дані. Ті, що чинять опір верифікації — варті занепокоєння.

Після задоволення результатами перевірки — перейдіть до застосунку figmascope, щоб експортувати контекстний бандл Figma і використати його з Claude Code або Cursor.