Preenchimento automático compartilhado entre iframes: uma proposta inicial

Alguns formulários têm campos em iframes, o que causa problemas para o preenchimento automático do navegador. Com o preenchimento automático compartilhado, o frame pai pode designar a confiabilidade de iframes de origem cruzada para oferecer uma experiência de preenchimento automático melhor para o usuário.

Uma proposta para permitir o preenchimento automático em um iframe de origem cruzada está disponível para testes. Com esse recurso, um frame pai pode designar os frames cujos campos podem ser preenchidos automaticamente. Isso é útil principalmente para formulários de pagamento, em que é muito comum que campos sensíveis (para conformidade com o PCI DSS) sejam carregados de uma origem de terceiros, como um provedor de serviços de pagamento (PSP, na sigla em inglês).

No exemplo abaixo, o nome do titular do cartão e a data de validade estão na página de nível superior (ou frame principal), mas o número do cartão de crédito e o código de verificação estão em iframes de um 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>

O diagrama a seguir representa a estrutura do formulário:

Diagrama em árvore mostrando como os campos diferentes estão em diferentes frames em um formulário de pagamento

Para os comerciantes, esse design combina segurança e flexibilidade:

  • Os iframes de origem cruzada isolam os dados de pagamento sensíveis da infraestrutura do comerciante, o que ajuda no compliance com o PCI DSS.
  • Os campos de formulário em diferentes frames podem ser organizados e estilizados para corresponder à aparência do site do comerciante.

Do ponto de vista do navegador, isso significa que há casos de uso comuns e legítimos para formulários com vários frames, o que levanta questões sobre o modelo de segurança para formulários. Para os usuários, formulários com vários frames podem resultar em uma experiência de preenchimento automático ruim, como no exemplo abaixo:

A política de mesma origem é uma base sólida para o preenchimento automático em todos os frames, mas não oferece granularidade suficiente para que o navegador diferencie frames confiáveis e não confiáveis para preenchimento automático.

Para permitir uma melhor experiência de preenchimento automático e manter a segurança dos dados do usuário, a equipe do Chrome está trabalhando em uma proposta que permite o preenchimento automático em um iframe de origem cruzada. Se o formulário for alterado para usar o preenchimento automático compartilhado, o Chrome vai preencher o número do cartão de crédito entre origens:

<!-- 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>

Isso pode resultar em uma melhor experiência de preenchimento automático para o usuário:

Testar o preenchimento automático compartilhado localmente

É possível testar o preenchimento automático compartilhado para um único usuário no Chrome 93.0.4577.0 e versões mais recentes em computadores e dispositivos móveis definindo flags na linha de comando.

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

Detectar suporte a recursos

Use o código abaixo para detectar se a propriedade shared-autofill está disponível:

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

A seguir

O preenchimento automático compartilhado é uma proposta inicial para adicionar um recurso de preenchimento automático à política de permissões. A equipe do Chrome está trabalhando com outros fornecedores de navegadores para analisar a proposta. Outras propostas sobre como aumentar a experiência do usuário para o preenchimento automático em iframes também estão em discussão.

Vamos continuar atualizando você à medida que progredirmos com essa proposta. Enquanto isso, se você tiver uma página de finalização de compra em que os campos sensíveis <input> (número do cartão de crédito, CVV) estão incorporados de um provedor externo, entre em contato com nossa equipe. Gostaríamos de saber se o preenchimento automático compartilhado em iframes pode melhorar a experiência de preenchimento automático dos usuários durante o processo de finalização da compra.

Saiba mais


Foto de Jessica Ruscello no Unsplash.