Pasar al contenido principal

Incrustando cosas mediante su URL usando oEmbed

Durante la labor de creación de contenidos no es raro querer hacer referencia a contenidos externos, desde simples documentos o páginas web hasta contenido multimedia o específico como tuits o posts de otras plataformas.

Los enlaces son uno de los pilares de la web, pero a veces se quiere algo más integrado. Si se quiere hacer referencia a un tuit, ¿por qué no embeberlo en nuestro contenido? Un caso muy habitual es un vídeo de Youtube o Vimeo, de forma que se pueda reproducir sin salir de la página. Otro caso puede ser visualizar un archivo PDF de Scribd.

Embebiendo contenidos con oEmbed

Para conseguir esto hay módulos Drupal específicos para cada caso, o genéricos pero centrados en un área, como los que integran servicios de vídeo. Otra estrategia es usar algo como oEmbed. oEmbed es un formato que permite describir representaciones de URL para ser embebidas en otras páginas web. Es decir, es una forma mediante la cual un proveedor (YouTube, Twitter, Scribd, Flickr, etc.) puede describir a un consumidor (nuestra página web, por ejemplo, con su Drupal) la forma de representar en el consumidor un recurso de ese proveedor.

Módulo URL Embed

Insertar contenido usando oEmbed requiere que el sitio Drupal de soporte a este formato. Pero estamos de suerte, ya que la iniciativa Drupal para multimedia ha creado el módulo URL Embed. El módulo integra oEmbed y permite usarlo en campos CKEditor una forma muy sencilla mediante un diálogo en el propio CKEditor.

Diálogo de inserción de URL del módulo URL Embed.

A punto de añadir una URL a este artículo en una nueva autoreferencia.

 

La lista de proveedores que admite es larga, e incluye proveedores de vídeo, documentos, fotos y muchas otras cosas que, honestamente, desconozco.

 

 

Consideraciones de seguridad

Hay un asunto delicado.  Mediante oEmbed se reciben datos HTML de fuentes externas que se muestran en nuesta web. Potencialmente, esto puede crear problemas de Cross Site Scripting:  si insertamos un código JavaSript malicioso, tendrá por ejemplo acceso a las cookies de nuestro dominio. Para mitigar este problema oEmbed sugiere mostrar los datos externos en un dominio diferente usando un iframe. Desafortunadamente, URL Embed no dispone de esta posibilidad. ¿Significa que este módulo abre un agujero de seguridad? No exactamente. El caso es que debemos confiar en el proveedor. Por ejemplo, es difícil que un servicio conocido como YouTube nos devuelva un código malicioso en su respuesta oEmbed, igual que otros servicios como Vimeo, Flickr y demás (aunque no imposible, desde luego). Pero servicios menos conocidos, y por tanto, menos sujetos a escrutinio, tienen más posibilidades de devolver un código que no sea del todo seguro, ya sea por mala intención o por simple torpeza. Lógicamente, si permitimos insertar respuestas oEmbed de cualquier proveedor no será raro que en algún momento tengamos un problema.

Por tanto, basta con conocer las implicaciones de seguridad y actuar con cabeza, como suele suceder en la vida real.

CKEditor 5

Actualmente el módulo url_embed no está disponible para CKEditor 5, pero hay una issue abierta CKEditor 5 Support por lo que se han elimininado los ejemplos expuestos en este artículos hasta que el módulo sea compatible.

Conclusión

URL Embed es un buen módulo pese a que está aún alpha. A día de hoy tiene casi 2.300 instalaciones y en nuestras pruebas no nos ha fallado. Es cierto que busca mantenedores y que no le vendría mal un poco de contribución, pero es suficientemente bueno como para usarse, siempre teniendo en cuenta las consideraciones de seguridad.

CKeditor
oEmbed
Image
RIcardo Sanz Ante

Ricardo Sanz

CTO