El portal casa 47 ha costado 1.4 MILLONES DE EUROS. Bueno, pues es...

Winix@WinixRun
7 views
Sep 09, 2026
~4 min read
Advertisement
2
Disclaimer: Todo lo que vais a leer en este post es accesible de forma pública y no precisa aprovecharse de ningún fallo de seguridad ni nada por el estilo. Es el código público que lee el navegador.
Todo lo que se ve aquí es público.
Todo lo que se ve aquí es público.
3
Cagada seria. Datos y procedimiento administrativo mal modelados
Aquí ya no hablamos de nombres feos o HTML mal puesto o chapuzas que a los frikis nos parecen graciosas.
Parte de los datos personales del solicitante se guardan todos juntos como un bloque de texto, en lugar de almacenarse como datos estructurados. Es como guardar una ficha de ciudadano escribiéndola entera dentro de una casilla de “observaciones”.
Eso dificulta buscar, comprobar, relacionar, auditar o modificar esos datos individualmente, algo especialmente poco sensato en una aplicación que gestiona solicitudes administrativas y datos personales.
Además, es el propio navegador del ciudadano quien envía órdenes como “esta solicitud pasa a PRESENTADA” o “el trámite está completado”.
Seguramente haya controles en el servidor y ni se me pasa por la cabeza probar a ver que pasa, porque es muy ilegal. Pero arquitectónicamente significa que una parte importante del flujo administrativo se dirige desde el código que se ejecuta en el ordenador del usuario, cuando debería ser el servidor quien determine y controle inequívocamente cada cambio de estado.
Para rematar, algunas consultas a la base de datos se construyen manualmente en el navegador insertando valores dentro de XML. En el caso observado el valor es un identificador interno y el riesgo parece bajo, pero sigue siendo un patrón innecesariamente frágil, desfasado y peligroso para la seguridad de los datos de los ciudadanos, que en el fondo ¿a quién le importan?
Y, como pequeña isla de civilización, en otras consultas sí han escapado correctamente los caracteres especiales.
Aquí ya no hablamos de nombres feos o HTML mal puesto o chapuzas que a los frikis nos parecen graciosas.
Parte de los datos personales del solicitante se guardan todos juntos como un bloque de texto, en lugar de almacenarse como datos estructurados. Es como guardar una ficha de ciudadano escribiéndola entera dentro de una casilla de “observaciones”.
Eso dificulta buscar, comprobar, relacionar, auditar o modificar esos datos individualmente, algo especialmente poco sensato en una aplicación que gestiona solicitudes administrativas y datos personales.
Además, es el propio navegador del ciudadano quien envía órdenes como “esta solicitud pasa a PRESENTADA” o “el trámite está completado”.
Seguramente haya controles en el servidor y ni se me pasa por la cabeza probar a ver que pasa, porque es muy ilegal. Pero arquitectónicamente significa que una parte importante del flujo administrativo se dirige desde el código que se ejecuta en el ordenador del usuario, cuando debería ser el servidor quien determine y controle inequívocamente cada cambio de estado.
Para rematar, algunas consultas a la base de datos se construyen manualmente en el navegador insertando valores dentro de XML. En el caso observado el valor es un identificador interno y el riesgo parece bajo, pero sigue siendo un patrón innecesariamente frágil, desfasado y peligroso para la seguridad de los datos de los ciudadanos, que en el fondo ¿a quién le importan?
Y, como pequeña isla de civilización, en otras consultas sí han escapado correctamente los caracteres especiales.
4
Tu tiempo me la pela. EL ESTADO SOY YO.
El HTML servido referencia el bundle con ruta relativa y no hay .
Para no técnicos:
La web carga sus archivos usando una ruta mal configurada.
Eso hace que algunas páginas funcionen al navegar desde el inicio, pero fallen si entras directamente, actualizas la página o vuelves desde Cl@ve o el banco.
Esto es como si yo, para darte una dirección te digo "la puerta de al lado". Eso funciona mientras tú no te muevas, en el momento que te vayas a otro sitio, la puerta de al lado ya no es la indicación correcta.
¿Qué puede pasar?
Puede dejar al usuario con una pantalla en blanco en mitad del trámite, después de rellenar 23890489238 formularios.
El arreglo es trivial: configurar correctamente la ruta base de la aplicación.
El HTML servido referencia el bundle con ruta relativa y no hay
Para no técnicos:
La web carga sus archivos usando una ruta mal configurada.
Eso hace que algunas páginas funcionen al navegar desde el inicio, pero fallen si entras directamente, actualizas la página o vuelves desde Cl@ve o el banco.
Esto es como si yo, para darte una dirección te digo "la puerta de al lado". Eso funciona mientras tú no te muevas, en el momento que te vayas a otro sitio, la puerta de al lado ya no es la indicación correcta.
¿Qué puede pasar?
Puede dejar al usuario con una pantalla en blanco en mitad del trámite, después de rellenar 23890489238 formularios.
El arreglo es trivial: configurar correctamente la ruta base de la aplicación.
5
Chapuza sin sentido.
Una página web completa dentro de otra. Paginaception si lo preferís. Han metido un dentro de un
Una página web completa dentro de otra. Paginaception si lo preferís. Han metido un dentro de un
6
Creo una norma y yo mismo la incumplo. Mola.
La propia web declara que está escrita en inglés de Estados Unidos, aunque todo el portal está en castellano, y además deja vacío el título de la página.
Para la mayoría de usuarios puede pasar desapercibido, pero los lectores de pantalla y otras herramientas de accesibilidad usan precisamente esos datos para interpretar correctamente la web.
En una web pública, esto no es simplemente “código feo”: son requisitos de accesibilidad exigidos por normativa.
Una vez más, yo me invento una ley, yo hago que el pringado que abre una web y gana 1.000€ se gaste dinero en cumplirla, pero yo soy el estado, para mi es opcional. Igual que la protección de datos. (Hablo en general de otras cosas, esta normativa NO tiene que cumplirla un particular).
La propia web declara que está escrita en inglés de Estados Unidos, aunque todo el portal está en castellano, y además deja vacío el título de la página.
Para la mayoría de usuarios puede pasar desapercibido, pero los lectores de pantalla y otras herramientas de accesibilidad usan precisamente esos datos para interpretar correctamente la web.
En una web pública, esto no es simplemente “código feo”: son requisitos de accesibilidad exigidos por normativa.
Una vez más, yo me invento una ley, yo hago que el pringado que abre una web y gana 1.000€ se gaste dinero en cumplirla, pero yo soy el estado, para mi es opcional. Igual que la protección de datos. (Hablo en general de otras cosas, esta normativa NO tiene que cumplirla un particular).
7
Mi favorita: Un "Eater egg" en una web oficial del estado.
Para los no frikis: Un easter egg es un "guiño" que alguien deja en una aplicación informática, una carita escondida, el nombre del autor camuflado por ahí...
No tengo tiempo para cumplir mis normativas, pero para esto sí. Ahí, redactadas, podéis ver las iniciales de los que han participado en el proyecto.
15 personas, por lo menos. Para esta página, ¿vale?
Para los no frikis: Un easter egg es un "guiño" que alguien deja en una aplicación informática, una carita escondida, el nombre del autor camuflado por ahí...
No tengo tiempo para cumplir mis normativas, pero para esto sí. Ahí, redactadas, podéis ver las iniciales de los que han participado en el proyecto.
15 personas, por lo menos. Para esta página, ¿vale?
9
¿He dicho ya 1.4 MILLONES DE EUROS?
10
Aparte de todo esto, hay un par de puntos que no he podido confirmar ni voy a hacerlo, que si alguien de EY llega a leer esto, que se lo diga a su jefe, porque tiene pinta de estar en violación del artículo 9 RGPD.
11
Hala, gracias por leerme.
1.4 Millones de saludos.
1.4 Millones de saludos.
12
Y ya que estamos, pues agradecemos a @ProtonPrivacy el mero hecho de existir.
Si queréis que vuestras webs de 1.4 millones funcionen igual de mal, pero de forma ánonima, usad protón VPN.
proton.me/es-es/l/busine…
Si queréis que vuestras webs de 1.4 millones funcionen igual de mal, pero de forma ánonima, usad protón VPN.
proton.me/es-es/l/busine…







