Empiece a realizar un seguimiento de su progreso
Inicio de Trailhead
Inicio de Trailhead

Adopción de Lightning y botones de JavaScript en desuso

Objetivos de aprendizaje

Después de completar esta unidad, podrá:
  • Describir los retos de seguridad relacionados con el uso de JavaScript.
  • Indicar casos de uso comunes de los botones de JavaScript personalizados.

Botones de JavaScript: el momento ideal para avanzar

Sabemos que le gusta trabajar con botones de JavaScript y los ha usado en Salesforce Classic durante años. De hecho, es posible que sea reacio a migrar a Lightning Experience, ya que los botones de JavaScript no son compatibles en este caso. No obstante, Lightning Experience ofrece mucho más que Salesforce Classic y es el futuro. Somos conscientes de que confía en nosotros siempre a la hora de migrar la funcionalidad existente a funciones e interfaces de usuario nuevas, pero en el caso de los botones de JavaScript, creemos que el futuro será más brillante en Lightning Experience, aunque no sea compatible con los botones de JavaScript. En este módulo le explicaremos por qué.

Los botones y vínculos de JavaScript son tipos de acciones de la interfaz de usuario de Salesforce Classic que le permiten crear código JavaScript en línea, el cual se puede invocar mediante un botón o un vínculo integrado en un registro o una página de lista. Por ejemplo, es posible que complete previamente los nuevos registros con datos tras la creación y actualización de valores de campos basados en otra lógica. O bien, puede que sea un socio de Salesforce que usa botones personalizados para integrarlos con su plataforma.

Si los botones de JavaScript son tan útiles, ¿por qué no son compatibles en Lightning Experience? Esto se debe a que hay una serie de retos relacionados con la seguridad y la garantía de confianza cuando se combina JavaScript que no es de confianza de varios orígenes y autores con el código fuente de las aplicaciones.

Examinaremos estos retos de seguridad y funcionales, y compartiremos con usted una serie de alternativas a los botones de JavaScript compatibles con la funcionalidad móvil y con Lightning. Además, veremos qué funciones de Salesforce puede usar para migrar la funcionalidad que ha creado mediante botones personalizados.

Tenemos el compromiso de solucionar el problema de personalización e integración del lado del cliente. Permítanos que le mostremos un nueva forma de pensar por lo que respecta a la funcionalidad de los botones de JavaScript en Lightning Experience.

Problemas de seguridad y casos de uso de los botones de JavaScript

Una de las ventajas más destacables de Lightning Experience es que puede agregar sus componentes Lightning personalizados a páginas de registro, inicio y de otros tipos. Por ejemplo, es posible que decida agregar un componente de mapa a sus páginas de registro de cuenta. O bien, puede proporcionar un componente para la aplicación AppExchange que se pueda agregar a la página de inicio o a un registro de oportunidad.

No obstante, sin determinados mecanismos de protección, los componentes tienen acceso a datos de otros componentes, acceso compartido a estructuras de ventanas y eventos, y acceso a cualquier API de cliente. Por ejemplo, en el caso de un componente de un socio para el cumplimiento de la directiva de privacidad HIPAA o de información financiera, puede ocurrir que un componente de otro origen acceda al componente mencionado si ambos componentes se encuentran en la misma página. Como puede imaginar, este acceso cruzado entre componentes puede provocar problemas de seguridad y de cumplimiento de la ley.

Qué ocurre en el caso de JavaScript en línea

Antes de analizar las medidas de protección que ha adoptado Salesforce para garantizar la seguridad de los componentes Lightning, vamos a destacar algunos de los problemas que se producen con JavaScript en línea. JavaScript es un lenguaje de programación estructurado de una forma poco estricta y compatible con todos los navegadores web modernos sin necesidad de usar un complemento. Permite la persistencia de los datos y el estado mediante cookies y API de almacenamiento, y también permite acceder a eventos, direcciones URL y cookies mediante el navegador. Lo que hace que JavaScript sea útil además de peligroso es que tiene acceso total a Document Object Model (DOM) y Browser Object Model (BOM).

En caso de tener acceso a DOM, un programador puede agregar, cambiar o eliminar prácticamente todo lo que encuentre en un documento HTML o XML. En las manos adecuadas, esto es útil dado que JavaScript proporciona una API para trabajar con texto, fechas y expresiones regulares. Por lo tanto, es fácil agregar funcionalidad de cliente con miniprogramas de JavaScript para mejorar la interfaz de usuario básica. Sin embargo, por otra parte esto implica un alto grado de vulnerabilidad, ya que en el caso de la secuencia de comandos de sitio cruzada (XSS), los actores malintencionados pueden obtener acceso mediante JavaScript a DOM o BOM y causar estragos.

Cuando se activa contenido dinámico en un sitio web, los hackers pueden usar XSS para inyectar código de cliente malintencionado en las páginas web que visualizan los usuarios normales. De este modo, los hackers pueden aprovechar la sesión y las cookies de un usuario para ejecutar secuencias de comandos con el fin de extraer datos, registrar pulsaciones de teclas, manipular entradas de formulario e incluso acceder a las API.

Lightning Locker: aumento de la seguridad de los componentes Lightning

La buena noticia es que Salesforce ya está trabajando en una solución para aumentar la seguridad de los componentes Lightning y restringir el acceso sin límites de JavaScript. Esta solución es Lightning Locker, que usa diversas tecnologías y técnicas destinadas a evitar lo siguiente:
  • XSS y problemas de seguridad similares
  • Acceso a DOM sin restricciones
  • Llamadas a API no documentadas o privadas
Además, las funciones de Lightning Locker permiten lo siguiente:
  • Control de versiones de API de cliente
  • Revisión de la seguridad más rápida (AppExchange)
  • Mejores prácticas de desarrollo de JavaScript
  • Actualizaciones sencillas a funciones y políticas de seguridad

Por consiguiente, ya sabe que los componentes Lightning se crean con el objetivo de ser más seguros. Sin embargo, ¿cómo le puede beneficiar su uso y cómo puede volver a crear la funcionalidad de los botones de JavaScript en Lightning Experience? Se lo explicaremos en breve. Primero, vamos a ver cómo podría usar botones de JavaScript en Salesforce Classic.

Acciones que realizan los usuarios con botones de JavaScript

Sabemos que muchos clientes usan esta opción. Algunos de ellos tienen cientos de botones de JavaScript en sus organizaciones. Además, hemos hablado con socios sobre sus casos de uso de los botones de JavaScript. Toda esta información la hemos recopilado en un conjunto de operaciones más amplio. Estos son los casos de uso más frecuentes de los botones de JavaScript.
  • Uso o manipulación de valores en un registro antes de guardar
    • Validación de campos (confirmación de que los valores se completan o se cumplen los criterios)
    • Llenado previo de valores basados en entradas de otros campos
    • Redireccionamiento a una página de Visualforce en función de los valores de entrada
    • Visualización de pantallas emergentes de confirmación
  • Creación de registros con valores completados previamente
  • Desencadenamiento de flujos construidos en Flow Builder
  • Llamadas a API de Salesforce o externas
  • Integración con terceros
  • Realización de acciones masivas en registros de una lista
  • Métodos y procedimientos directos mediante pantallas emergentes de comentarios para usuarios

Hay más casos de uso y algunos de ellos son tan específicos para una organización determinada que es imposible categorizarlos. Próximamente, describiremos las funciones que puede usar para gestionar todos los casos de uso mencionados y migrar la funcionalidad de los botones de JavaScript a la aplicación móvil Salesforce y Lightning Experience.