Comece a acompanhar seu progresso
Página inicial do Trailhead
Página inicial do Trailhead

Adotar o Lightning e deixar os botões JavaScript para trás

Objetivos de aprendizagem

Após concluir esta unidade, você estará apto a:
  • Descrever os desafios de segurança no uso do JavaScript.
  • Enumerar casos de uso comuns para os botões personalizados do JavaScript.

Botões JavaScript: é hora de dar tchau

Sabemos que você ama os botões JavaScript e que os tem usado no Salesforce Classic há anos. Na verdade, você pode estar com receio de migrar para o Lightning Experience porque os botões JavaScript não têm suporte lá. Mas o Lightning Experience oferece muito mais do que o Salesforce Classic e é o próximo passo na evolução. Sabemos que você espera que as funcionalidades existentes sempre sejam migradas para novos recursos e IU, mas no caso dos botões JavaScript, acreditamos que o futuro é mais bonito no Lightning Experience, mesmo sem o suporte aos botões JavaScript. Neste módulo, vamos mostrar por quê.

Os botões e links JavaScript são tipos de ações na IU do Salesforce Classic que permitem a você criar código JavaScript embutido que pode ser invocado por um botão ou link inserido em um registro ou página de lista. Por exemplo, é possível que você preencha novos registros automaticamente com dados na criação e na atualização de valores nos campos com base em outra lógica. Ou talvez você seja um parceiro da Salesforce que usa botões personalizados para integrar à sua plataforma.

Se os botões JavaScript são tão úteis, por que não damos suporte a eles no Lightning Experience? Por que existem vários desafios de segurança relevantes na combinação de JavaScript não confiável de várias fontes e autores com o código-fonte, na tentativa de manter a confiabilidade.

Abordaremos esses desafios funcionais e de segurança e mostraremos as alternativas aos botões JavaScript que funcionam bem no Lightning e em dispositivos móveis. Também veremos recursos do Salesforce que você pode usar para migrar a funcionalidade criada usando botões personalizados.

Estamos empenhados em resolver o problema de integração e personalização no lado do cliente. Vamos mostrar a você uma nova abordagem para pensar na funcionalidade dos botões JavaScript no Lightning Experience.

Problemas de segurança e casos de uso de botões JavaScript

Uma das vantagens mais interessantes do Lightning Experience é que você pode adicionar seus próprios componentes do Lightning Experience a registros, à página inicial e a outras páginas. Por exemplo, você pode querer adicionar um componente de mapa às páginas de registro de conta. Ou pode criar um componente para seu aplicativo do AppExchange que pode ser adicionado à página inicial ou a um registro de oportunidade.

No entanto, sem determinadas proteções, os componentes têm acesso aos dados uns dos outros, compartilham o acesso às estruturas de janela e evento e acessam qualquer API do lado do cliente. Um componente de parceiro para conformidade com HIPAA (Insurance Portability and Accountability Act, Lei de Portabilidade e Responsabilidade de Seguros de Saúde) ou informações financeiras, por exemplo, poderia ser acessado por um componente de uma origem diferente quando ambos estivessem em uma mesma página. Como pode ver, esse acesso cruzado dos componentes poderia gerar problemas regulatórios e de segurança.

O que acontece com o JavaScript embutido

Antes de falarmos das proteções usadas pelo Salesforce para a segurança dos componentes do Lightning, vamos destacar alguns problemas com o JavaScript embutido. O JavaScript é uma linguagem de programação vagamente tipada, com suporte por todos os navegadores da Web modernos sem a necessidade de plug-in. Ele pode manter dados e estados por meio de cookies e APIs de armazenamento e pode acessar eventos, URLs e cookies no navegador. O que torna o JavaScript ao mesmo tempo útil e perigoso é o acesso total ao DOM (Document Object Model, Modelo de objeto de documento) e ao BOM (Browser Object Model, Modelo de objeto de navegador).

Com acesso ao DOM, um programador pode adicionar, alterar ou excluir quase tudo o que é encontrado em um documento em HTML ou XML. Nas mãos certas, isso é útil porque o JavaScript assegura uma API para trabalhar com texto, datas e expressões regulares e facilita a adição de funcionalidades no lado do cliente com trechos JavaScript que aprimoram a interface de usuário base. No entanto, isso também é uma grande vulnerabilidade, já que com Cross site scripting (XSS), atores mal-intencionados podem obter acesso ao DOM ou ao BOM pelo JavaScript e instalar o caos.

Quando um site ativa conteúdo dinâmico, os hackers podem usar XSS para injetar código mal-intencionado do lado do cliente nas páginas da Web visualizadas por usuários comuns. Os hackers podem então se apoderar de uma sessão de usuário e dos cookies para executar scripts que extraiam dados ou registro de teclas pressionadas, manipulem registros de formulários e até acessem APIs.

Lightning Locker: como tornar os componentes do Lightning mais seguros

A boa notícia é que o Salesforce já está trabalhando em uma solução para tornar os componentes do Lightning mais seguros e restringir o acesso livre do JavaScript. A solução se chama Lightning Locker, que usa várias técnicas e tecnologias para evitar:
  • problemas de segurança com XSS e semelhantes
  • Acesso irrestrito ao DOM
  • Chamadas a APIs não registradas/privadas
Ao mesmo tempo, os recursos do Lightning Locker também permitem:
  • Controle de versão da API do lado do cliente
  • Análise de segurança mais rápida (AppExchange)
  • Melhores práticas de desenvolvimento de JavaScript
  • Atualizações fáceis de recursos e políticas de segurança

Agora você sabe que os componentes do Lightning são criados para serem mais seguros. Mas quais as vantagens de usá-los e como você pode recriar a funcionalidade do botão JavaScript com o Lightning Experience? Vamos mostrar isso em breve. Mas, primeiro, vamos dar uma olhada em como você deve estar usando botões JavaScript no Salesforce Classic.

O que as pessoas estão fazendo com botões JavaScript

Recebemos informações de vários clientes, alguns com centenas de botões JavaScript em suas organizações. Também falamos com parceiros sobre seus casos de uso de botões JavaScript. Comparamos as informações recebidas com um conjunto mais amplo de operações. Vejamos os casos de uso mais comuns de botões JavaScript.
  • Usar ou manipular valores em um registro antes de salvá-lo
    • Validar campos – fazer com que os valores sejam preenchidos e/ou atendam a critérios
    • Preencher valores automaticamente com base em valores de outros campos
    • Redirecionar para uma página do Visualforce com base nos valores inseridos
    • Exibir telas pop-up de confirmação
  • Criar registros com valores preenchidos automaticamente
  • Acionar fluxos criados no Flow Builder
  • Chamar o Salesforce ou APIs externas
  • Integrar-se com terceiros
  • Realizar ações em massa em registros de uma lista
  • Indicar métodos e procedimentos usando telas pop-up de feedback para usuários

Existem outros cenários e casos de uso que são tão específicos de uma organização que fica impossível categorizá-los. A seguir, abordaremos recursos que podem ser usados para lidar com todos os casos de uso mencionados e migrar a funcionalidade do botão JavaScript para o aplicativo móvel Salesforce e o Lightning Experience.

retargeting