Чтобы использовать любой сторонний инструмент 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, кроме двух эндпоинтов Figma API.
  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 минимизирует поверхность атаки для кражи учётных данных на стороне сервера. Она не устраняет все проблемы безопасности:

Мы не утверждаем, что это замена аудиту безопасности корпоративного уровня. Мы утверждаем: архитектура делает конкретный класс атак — взлом базы данных токенов на стороне сервера — структурно невозможным путём устранения сервера. Это значимое сокращение поверхности атаки, а не полный иммунитет.

Почему open source важен здесь

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

Если бы мы лгали о чём-либо из этого, ложь нашлась бы за тридцать минут. Вот в чём суть. Open source — это не просто выбор лицензии; для инструмента, обрабатывающего учётные данные, это единственная честная основа для заявления о безопасности.

Вам следует проверять инструменты, работающие с вашими учётными данными. Инструменты, противостоящие проверке, — вот те, о которых стоит беспокоиться.

Если вы удовлетворены, перейдите в приложение figmascope, чтобы экспортировать контекстный бандл Figma и использовать его с Claude Code или Cursor.