Общее автозаполнение для всех iframe: первоначальное предложение

Некоторые формы имеют поля в iframes, что вызывает проблемы с автозаполнением браузера. С помощью shared-autofill родительский фрейм может определять надежность кросс-источниковых iframes, чтобы поддерживать лучший опыт автозаполнения для пользователя.

Предложение разрешить автозаполнение в кросс-источник iframe доступно для тестирования. С помощью этой функции родительский фрейм может назначать фреймы, поля которых должны быть автозаполняемыми. Это особенно полезно для платежных форм, где очень часто конфиденциальные поля (для соответствия PCI DSS ) загружаются из стороннего источника, например, поставщика платежных услуг (PSP).

В следующем примере имя владельца карты и дата окончания срока действия находятся на странице верхнего уровня (или в главном фрейме), но номер кредитной карты и код проверки находятся в iframe от PSP.

<!-- Top-level document URL: https://merchant.com/... -->
<form>
  Cardholder name:    <input id="name">
  Credit card number: <iframe src="https://psp.com/..."><input id="num"></iframe>
  Expiration date:    <input id="exp">
  CVC:                <iframe src="https://psp.com/..."><input id="cvc"></iframe>
</form>

Следующая диаграмма представляет структуру формы:

Древовидная диаграмма, показывающая, как различные поля находятся в разных рамках в платежной форме

Для торговцев этот дизайн сочетает в себе безопасность и гибкость:

  • Кросс-источниковые фреймы iframe изолируют конфиденциальные платежные данные от инфраструктуры продавца, что способствует соблюдению требований PCI DSS .
  • Поля формы в разных фреймах можно расположить и оформить в соответствии с внешним видом и стилем веб-сайта продавца.

С точки зрения браузера это означает, что существуют общие и законные случаи использования многофреймовых форм, что поднимает вопросы о модели безопасности для форм. Для пользователей многофреймовые формы могут привести к плохому опыту автозаполнения, как в следующем примере:

Политика одинакового источника является надежной основой для автозаполнения между фреймами, но не обеспечивает достаточной детализации, чтобы браузер мог различать доверенные и ненадежные фреймы для автозаполнения.

Чтобы обеспечить лучший опыт автозаполнения, сохраняя при этом безопасность пользовательских данных, команда Chrome работает над предложением, позволяющим автозаполнение в кросс-источник iframe. Если форма изменена для использования общего автозаполнения, Chrome успешно заполняет номер кредитной карты кросс-источника:

<!-- Top-level document URL: https://merchant.com/... -->
<form>
  Cardholder name:    <input id="name">
  Credit card number: <iframe src="https://psp.com/..." allow="shared-autofill"><input id="num"></iframe>
  Expiration date:    <input id="exp">
  CVC:                <iframe src="https://psp.com/..." allow="shared-autofill"><input id="cvc"></iframe>
</form>

Это может улучшить процесс автозаполнения для пользователя:

Попробуйте локальное автозаполнение с общим доступом

Вы можете протестировать функцию общего автозаполнения для одного пользователя в Chrome 93.0.4577.0 и более поздних версиях на настольных компьютерах и мобильных устройствах, установив флаги из командной строки .

--flag-switches-begin --enable-features=AutofillAcrossIframes,AutofillSharedAutofill

Поддержка функции обнаружения

Используйте следующий код, чтобы определить, доступно ли свойство shared-autofill :

if (document.featurePolicy && document.featurePolicy
      .features().includes('shared-autofill')) {
  console.log('shared-autofill available!');
}

Что дальше?

Shared-autofill — это первоначальное предложение по добавлению функции автозаполнения в политику разрешений . В настоящее время команда Chrome работает с другими поставщиками браузеров, чтобы рассмотреть это предложение. Также обсуждаются дополнительные предложения по улучшению пользовательского опыта для автозаполнения через iframes.

Мы продолжим предоставлять обновления по мере продвижения этого предложения. В то же время, если у вас есть страница оформления заказа, где конфиденциальные поля <input> (номер кредитной карты, cvc) встроены от стороннего поставщика, свяжитесь с нами . Мы бы с удовольствием узнали, может ли совместное автозаполнение через iframe потенциально улучшить опыт автозаполнения для ваших пользователей во время процесса оформления заказа.

Узнать больше


Фото Джессики Расцелло на Unsplash .