Paywalls vulnerables en diarios digitales — La Nueva España
“Para continuar leyendo, suscríbete al acceso de contenidos web”, ¿te suena? Muchos diarios digitales tienen suscripciones premium para acceder a la totalidad del contenido.
Hoy os traigo el caso de un diario digital cuyo “muro de pago” es vulnerable. Disclaimer: El propósito de esta publicación es meramente educativo y busca concienciar sobre el desarrollo de software de calidad.
Actualización: esto ocurre en todos los diarios del grupo editorial Prensa Ibérica, en la última versión (que tiene sección premium), he comprobado que la lista de diarios vulnerables son los siguientes:
- https://www.lne.es/premium/
- https://www.farodevigo.es/premium/
- https://www.levante-emv.com/premium/
- https://www.diariodemallorca.es/premium/
- https://www.informacion.es/premium/
- https://www.laprovincia.es/premium/
Nuestro protagonista: La Nueva España — Diario Independiente de Asturias (lne.es) tiene la sección “Premium”:
Si visitamos cualquier noticia, veremos que solo nos muestra las primeras líneas y nos pide suscribirnos para acceder al contenido premium. Noticia de ejemplo: clic para abrir.
Ahora bien, si abrimos las “Herramientas de desarrollo” del navegador pulsando F12 (en Google Chrome / Microsoft Edge / Mozilla Firefox) y seleccionamos el texto degradado con el selector veremos lo siguiente:
Podemos ver que debajo de la entradilla con el degradado hay un contenedor con unas clases sospechosas:
article-body--paywall baldomero no-baldomero
¿Cuál será el contenido de ese div? ¡Voilá! ¡El artículo completo!
Si eliminamos las clases “baldomero” y “no-baldomero”, se muestra el artículo completo en la página, ya el único estilo que aplicaban es un “display: none!important”.
Es decir: el contenido completo está cargado en nuestro navegador, pero oculto mediante hoja de estilos css, una “cutrada”.
Saltarse el paywall automáticamente
Muy bien… ¿sería posible automatizar el proceso de mostrar el contenido de los artículos? Sí.
Hace falta una extensión para el navegador que permita ejecutar JavaScript en cualquier sitio web, por ejemplo la extensión de Chrome (también disponible para Edge): Custom JavaScript for websites. La instalamos y seguimos estos 4 pasos:
- Instalamos y abrimos la extensión
- Habilitamos la extensión “cjs” para este host
- Pegamos el script que oculta el paywall y muestra el contenido:
document.getElementsByClassName("article-body--truncated")[0].classList.remove("article-body--truncated");
document.getElementsByClassName("baldomero")[0].classList.remove("baldomero");
document.getElementsByClassName("paywall")[0].style.display = "none";
4. Guardamos el script, y ya estaría.
De esta manera se puede burlar el paywall y acceder a todo el contenido premium del portal.
¿Cómo hacer un paywall más seguro?
Tip para desarrolladores :)
- En las páginas de las secciones premium el servidor no debería enviar el contenido completo del artículo.
- Si no se envía el contenido completo de los artículos (texto, imágenes), el tráfico en la red se reduce y la página carga más rápido.
Hemos comprobado que con un simple explorador se puede acceder a todo el contenido, nada sofisticado.
Lo mismo aplica para validación de formularios, por ejemplo, una aplicación web no debería fiarse de los datos que recibe el cliente (navegador), sino que debería validarse además en el lado servidor para evitar problemas de seguridad.
—
Twitter: @miguelms_es
Si quieres contactar conmigo: miguel@miguelms.es