Origin API появляется в Edge 145 — Нативный объект Origin приходит в браузеры

ReactNode.jsDevOps

Что произошло

  • Microsoft Edge 145 поставляет Origin API — нативный, структурированный объект Origin, который позволяет веб-коду парсить, сериализовать и сравнивать источники вместо того, чтобы полагаться на хрупкие ASCII-строки. (learn.microsoft.com)

Почему это важно для разработчиков полного стека

  • Более безопасные сравнения источников: многие ошибки безопасности и логические ошибки возникают из-за сравнения сериализованных строк источников (или парсинга location.origin), особенно в отношении непрозрачных источников (песочницы, data URL и т. д.). Origin API предоставляет каноническое представление источника браузера и предлагает вспомогательные функции для сравнения, чтобы вы могли надежно тестировать отношения одного источника / одного сайта без хрупкой обработки строк. (learn.microsoft.com)
  • Меньше крайних случаев для сценариев с iframe и песочницами: непрозрачные источники ведут себя особым образом (один источник только с собой). Origin API позволяет вам напрямую рассуждать об этих семантиках, вместо того чтобы изобретать собственные эвристики для строк. (learn.microsoft.com)
  • Упрощенная координация между сервером и клиентом: логика сервера, которая в настоящее время парсит источники из заголовков, параметров запроса или document.referrer, может быть упрощена (или, по крайней мере, проверена) по сравнению с тем же каноническим представлением, которое использует браузер, что снижает несоответствия, которые приводят к проблемам с аутентификацией/сессией и ошибкам CSRF/CORS. (learn.microsoft.com)

Что появилось (коротко)

  • Браузер предоставляет объект Origin первого класса, который поддерживает парсинг/сериализацию и надежные сравнения источников/сайтов; браузеры перенесли эту функцию в стабильные каналы, и функция отражена в спецификации HTML/тестировании. (learn.microsoft.com)

Немедленный контрольный список — практические шаги для команд (высокий приоритет)

  1. Аудит сравнений источников и проверок аутентификации (1–2 дня)
    • Поиск в вашем коде любой логики, которая сравнивает источники с помощью равенства строк (например, a.origin === b.origin, парсинг имен хостов с помощью регулярных выражений, ручные проверки подстрок). Рассматривайте эти места как рискованные и добавьте тесты или флаги функций для их модернизации.
  2. Обнаружение функций и прогрессивное улучшение (минуты)
    • Используйте обнаружение функций (if (typeof Origin !== 'undefined')), чтобы использовать нативный API, где это возможно, и сохраняйте текущие резервные варианты для старых браузеров.
    • Пример шаблона (концептуально, встроенно):
      • Если Origin существует: const o = Origin.from(someValue); o.isSameOrigin(otherOrigin);
      • Иначе: продолжайте использовать хорошо протестированные, централизованные вспомогательные функции, которые инкапсулируют вашу логику на основе строк.
  3. Обновите серверную валидацию и логирование (несколько часов)
    • Где серверы проверяют заголовки источников (CORS, привязка токенов, проверка вебхуков), логируйте как полученный сериализованный источник, так и канонический источник, созданный клиентским кодом во время развертывания. Это поможет выявить несоответствия на ранней стадии.
  4. Укрепите поведение iframe / песочницы в интеграционных тестах (1–3 дня)
    • Добавьте интеграционные тесты для песочниц, data/file URL и перенаправлений, чтобы проверить обработку сессий и SameSite. Origin API делает многие крайние случаи явными; протестируйте их.
  5. Запланируйте дорожную карту замены (2–4 спринта)
    • Рефакторинг критических путей безопасности (проверки CSRF, привязка сессий, платежные потоки) для предпочтения канонических сравнений Origin, где это возможно. Начните с низкорисковых сервисов и продвигайтесь вперед.

Заметки о совместимости и развертывании

  • Origin API появляется в стабильных каналах на основе Chromium (Edge 145 / активность развертывания Chromium), и связанная работа с движками присутствует в других браузерах; развертывания различаются по браузерам и платформам — продолжайте использовать обнаружение функций и поддерживайте резервные варианты во время перехода. (learn.microsoft.com)
  • Не предполагайте универсальную доступность пока — рассматривайте API как прогрессивное улучшение и защищайте критические потоки с помощью серверной валидации, пока вы не измерите принятие клиентом.

Риски и подводные камни

  • Не заменяйте проверки авторизации на стороне сервера только потому, что клиент сообщает о источнике — Origin API помогает клиентам делать меньше ошибок, но входные данные, контролируемые злоумышленниками, все равно должны проверяться на стороне сервера.
  • Следите за сторонними фреймами и навигациями между источниками: наличие объекта Origin не изменяет основную модель безопасности; он только делает модель более простой и безопасной для инспекции из скрипта.

Итог

  • Origin API — это тонкое, высокоэффективное улучшение веб-платформы: оно снижает классы ошибок источника/парсинга, которые исторически вызывали проблемы с безопасностью и управлением сессиями. Начните с аудита сравнений источников, добавьте обнаружение функций и постепенно мигрируйте критические проверки на использование канонических сравнений, как только принятие достигнет вашей пользовательской базы. (learn.microsoft.com)

Источник:

Источник

Читать дальше