[{"data":1,"prerenderedAt":906},["ShallowReactive",2],{"blog-es-domain-and-certificate-expiry":3,"blog-index-es":553},{"id":4,"title":5,"body":6,"category":510,"cover":511,"coverAlt":512,"description":513,"draft":514,"extension":515,"faq":516,"image":530,"keywords":531,"meta":540,"navigation":541,"ogTitle":542,"path":543,"published":544,"seo":545,"stem":546,"tldr":547,"updated":544,"__hash__":552},"blog_es\u002Fblog\u002Fdomain-and-certificate-expiry.md","Dominio caducado, web caída: qué pasa a partir de ahora",{"type":7,"value":8,"toc":497},"minimark",[9,13,16,28,33,36,44,58,64,70,73,79,93,97,100,103,106,109,113,116,122,128,133,136,202,205,209,212,221,224,227,232,241,245,248,263,266,327,330,334,337,343,349,360,364,367,375,429,436,439,442,453,460,464,489],[10,11,12],"p",{},"El viernes tu aplicación funcionaba. El lunes hay una advertencia del navegador\na página completa, o directamente no hay nada, y en tu código no cambió nada.\nAlguien te manda una captura y tú escribes las palabras que salen en ella en un\nbuscador: dominio caducado, web caída.",[10,14,15],{},"Aquí está la parte que la mayoría de los consejos sobre esto se equivocan. Esa\nmañana la pueden producir dos fallos distintos, corren en dos relojes distintos,\ny el que suena más barato es el grave. Un certificado vencido es ruidoso,\nembarazoso y sustituible hoy. Un dominio vencido es silencioso al principio, y\nsi lo dejas el tiempo suficiente tu aplicación no está caída. Es de otra\npersona.",[10,17,18,19,23,24,27],{},"Entre tu aplicación y la gente que la usa hay dos cosas. El ",[20,21,22],"strong",{},"dominio"," es el\nalquiler de la tienda: el nombre encima de la puerta y el derecho a seguir\nusándolo. El ",[20,25,26],{},"certificado"," es la licencia del escaparate que dice que esta\ntienda es de verdad la del cartel. Alquilas las dos. Las dos se renuevan en una\nfecha que fijaste una vez y que no has vuelto a mirar.",[29,30,32],"h2",{"id":31},"qué-pasa-cuando-caduca-mi-dominio","¿Qué pasa cuando caduca mi dominio?",[10,34,35],{},"Tu aplicación se apaga, y entonces arranca un reloj que corre en tres etapas.",[10,37,38,39,43],{},"Para ",[40,41,42],"code",{},".com"," y los demás dominios genéricos el calendario viene de ICANN y no de\ntu registrador, así que es prácticamente el mismo compres donde compres el\nnombre.",[10,45,46,49,50,57],{},[20,47,48],{},"Todavía tuyo, ya apagado."," Tu registrador mantiene el nombre renovable al\nprecio normal durante una ventana que elige él, normalmente unas semanas. La\n",[51,52,56],"a",{"href":53,"rel":54},"https:\u002F\u002Fwww.icann.org\u002Fresources\u002Fpages\u002Ferrp-2013-02-28-en",[55],"nofollow","Expired Registration Recovery Policy","\nde ICANN le exige que corte tu DNS durante esa ventana: al menos los últimos ocho\ndías en que el nombre todavía se puede renovar, tiene que dejar de apuntar a\nninguna parte. O sea que tu aplicación cae mucho antes de que el nombre vaya a\nningún sitio, y así es como suele enterarse el propietario.",[10,59,60,63],{},[20,61,62],{},"Borrado, y todavía recuperable."," Cuando el registrador borra definitivamente\nel registro, empieza un Redemption Grace Period de 30 días. ICANN se lo exige a\ncasi todos los registros genéricos. Solo tú puedes traer el nombre de vuelta en\nese periodo, solo a través del registrador que lo borró, y pagas una tasa de\nrestauración además de la renovación. ICANN no fija esa tasa, y es bastante más\nque una renovación.",[10,65,66,69],{},[20,67,68],{},"Pending delete."," Unos cinco días en los que ni tú ni tu registrador cambiáis\nnada. Después el nombre queda liberado.",[10,71,72],{},"La misma política dice que tu registrador tiene que escribirte: dos veces antes\nde que caduque el registro, aproximadamente un mes y una semana antes, y otra vez\ndentro de los cinco días siguientes. Así que si alguna vez se te ha caducado un\ndominio sin aviso, lo que hay que revisar no es el calendario. Es qué dirección\ntiene puesta tu cuenta del registrador.",[74,75],"diagram",{"alt":76,"caption":77,"src":78},"Una banda horizontal en cuatro partes, con una figura en su extremo izquierdo. La primera parte es sólida; una línea marca la fecha de caducidad y la banda pasa a estar rayada. Una segunda línea marca el borrado, tras el cual un segmento es ámbar con el número 30 y el siguiente es rojo con el número 5. Después la banda termina, seguida de un hueco vacío punteado y de otras tres figuras.","Las tres etapas después de que caduque un dominio, para .com y los demás dominios genéricos. En las dos primeras el nombre es recuperable y después de la tercera es de cualquiera.","\u002Fblog\u002Fdomain-and-certificate-expiry\u002Fthe-clock-after-expiry-1600x540.png",[10,80,81,82,85,86,85,89,92],{},"Los dominios de país tienen sus propios calendarios. ",[40,83,84],{},".io",", ",[40,87,88],{},".co.uk",[40,90,91],{},".de"," y el\nresto quedan fuera de esa política, y algunos son bastante menos indulgentes. Si\ntu aplicación está en uno de ellos, lee la página de ciclo de vida de tu registro\nen vez de esta sección.",[29,94,96],{"id":95},"puede-alguien-quedarse-con-mi-dominio-después-de-que-caduque","¿Puede alguien quedarse con mi dominio después de que caduque?",[10,98,99],{},"Sí, una vez liberado, y eso es lo que hace que este caso sea distinto de todo lo\ndemás en un informe de seguridad.",[10,101,102],{},"Cualquier otro hallazgo es un error dentro de algo que es tuyo. Puedes ir y\narreglarlo. Un dominio liberado se sale de tu propiedad por completo: el nombre\nqueda registrado a nombre de otra persona, y todo lo que apuntaba a tu aplicación\napunta ahora a ella. Los marcadores. El enlace de tu correo de bienvenida. La\ndirección de la tarjeta que repartiste en una conferencia. El enlace de\nrestablecer contraseña que enviaste la semana pasada.",[10,104,105],{},"Los nombres también se pillan rápido. Hay empresas cuyo producto entero consiste\nen pedir un dominio en el segundo en que se libera, y por eso un nombre con algo\nde tráfico rara vez se queda mucho tiempo sin registrar.",[10,107,108],{},"Todavía puedes intentar recomprarlo. Estarás negociando con quien llegó primero,\nal precio que él diga. Un certificado que venció esta mañana se puede sustituir\nesta mañana; un dominio liberado el mes pasado puede que ni siquiera esté a la\nventa.",[29,110,112],{"id":111},"por-qué-mi-web-dice-no-es-seguro-si-ayer-estaba-bien","¿Por qué mi web dice «no es seguro» si ayer estaba bien?",[10,114,115],{},"Eso lo producen dos cosas distintas, y cuál de las dos tienes está escrito en la\npantalla.",[10,117,118,121],{},[20,119,120],{},"Un aviso en la barra de direcciones"," es tu navegador diciendo que la página\nllegó por HTTP simple, sin ningún certificado de por medio. Tu página sigue\ncargando debajo. No ha caducado nada. Algo está sirviendo tu web sin HTTPS, y eso\nes un problema aparte, no este.",[10,123,124,127],{},[20,125,126],{},"Un certificado caducado o no confiable no es un aviso. Es un muro."," Tu\naplicación queda sustituida por una página entera: en Chrome, la que dice que la\nconexión no es privada; en Firefox, la advertencia sobre un posible riesgo de\nseguridad. Llegar a tu web significa encontrar un botón de Configuración avanzada\ny atravesar haciendo clic una advertencia que dice que el sitio no es seguro. La\nmayoría de los visitantes no lo harán.",[74,129],{"alt":130,"caption":131,"src":132},"Dos ventanas de navegador. En la primera la página se ve con normalidad y en la barra de direcciones hay un pequeño círculo tachado. En la segunda no hay página ninguna: un panel opaco llena la ventana, con una señal de advertencia y un único botón.","A la izquierda la página sigue cargando y el navegador la está comentando. A la derecha el certificado falló y ya no queda página que comentar.","\u002Fblog\u002Fdomain-and-certificate-expiry\u002Fa-label-and-a-wall-1600x820.png",[10,134,135],{},"Lee el código que hay debajo de la advertencia antes de cambiar nada, porque te\ndice qué reparación necesitas:",[137,138,139,155],"table",{},[140,141,142],"thead",{},[143,144,145,149,152],"tr",{},[146,147,148],"th",{},"Lo que imprime el navegador",[146,150,151],{},"Qué significa",[146,153,154],{},"Qué lo arregla",[156,157,158,177,191],"tbody",{},[143,159,160,171,174],{},[161,162,163,166,167,170],"td",{},[40,164,165],{},"NET::ERR_CERT_DATE_INVALID"," en Chrome, ",[40,168,169],{},"SEC_ERROR_EXPIRED_CERTIFICATE"," en Firefox",[161,172,173],{},"El certificado pasó su fecha de fin",[161,175,176],{},"Un certificado nuevo",[143,178,179,185,188],{},[161,180,181,184],{},[40,182,183],{},"NET::ERR_CERT_AUTHORITY_INVALID"," en Chrome",[161,186,187],{},"No lo firmó nada en lo que el navegador confíe, o nunca se instaló un eslabón de la cadena",[161,189,190],{},"Un certificado de una autoridad de confianza, o el eslabón que falta. Renovar no hace nada",[143,192,193,196,199],{},[161,194,195],{},"El mensaje que dice que el reloj del dispositivo va adelantado o atrasado",[161,197,198],{},"El que tiene mal la fecha es el dispositivo del visitante",[161,200,201],{},"Nada por tu parte",[10,203,204],{},"Esa última fila conviene leerla antes de ponerse a buscar en tu alojamiento. Una\nsola persona que avisa de una advertencia de certificado puede ser el portátil de\nesa persona.",[29,206,208],{"id":207},"por-qué-un-certificado-https-deja-de-renovarse-sin-que-se-rompa-nada","Por qué un certificado HTTPS deja de renovarse sin que se rompa nada",[10,210,211],{},"Porque la renovación debería ocurrir un mes antes de que el certificado importe,\ny una renovación fallida no cambia nada que tú puedas ver.",[10,213,214,215,220],{},"La mayoría de las aplicaciones construidas así las sirve un alojamiento que coge\ncertificados de Let’s Encrypt y los renueva por ti. Let’s Encrypt\n",[51,216,219],{"href":217,"rel":218},"https:\u002F\u002Fletsencrypt.org\u002Fdocs\u002Ffaq\u002F",[55],"emite certificados de 90 días y recomienda renovar cada 60",",\nasí que el proceso que mantiene viva tu web debería terminar bien con 30 días\ntodavía por delante.",[10,222,223],{},"Para conseguir uno nuevo, tu alojamiento tiene que demostrarle a la autoridad que\nsigue controlando tu nombre: o sirviendo un archivo que la autoridad pide en tu\ndominio, o escribiendo un registro en tu DNS. Cualquier cosa que rompa esa prueba\nrompe la renovación. Mover tu DNS a otro proveedor. Poner un proxy por delante de\nla aplicación. Apuntar el nombre a otro sitio para probar algo y volver a\napuntarlo. Añadir un registro CAA, que es una entrada DNS que nombra qué\nautoridades pueden emitir para tu dominio y que prohíbe en silencio a todas las\nque no nombra.",[10,225,226],{},"Nada de eso tira tu web. El certificado que ya tienes sigue funcionando, así que\nla aplicación sigue en pie y el candado sigue ahí mientras la renovación vuelve a\nfallar cada día durante un mes sin que nadie mire.",[74,228],{"alt":229,"caption":230,"src":231},"Dos pistas superpuestas sobre un mismo eje marcado 0, 60 y 90. La pista de arriba es la renovación: un recuadro con una marca de verificación dentro hasta el día 60, y luego seis cruces espaciadas hasta el día 90. La pista de abajo es lo que ven los visitantes: color de acento sin interrupción a lo largo de todo el eje, que en el día 90 se convierte en un bloque ámbar.","La renovación empieza a fallar el día 60 y la web se ve perfecta hasta el día 90. Todo lo que te lo habría dicho está en la pista de arriba.","\u002Fblog\u002Fdomain-and-certificate-expiry\u002Fnothing-visible-for-30-days-1600x620.png",[10,233,234,235,240],{},"La carta que antes llegaba también ha dejado de llegar.\n",[51,236,239],{"href":237,"rel":238},"https:\u002F\u002Fletsencrypt.org\u002F2025\u002F06\u002F26\u002Fexpiration-notification-service-has-ended",[55],"Let’s Encrypt terminó sus correos de aviso de caducidad el 4 de junio de 2025",",\ntras anunciarlo en enero de ese mismo año: la renovación ya está automatizada\npara la mayoría de sus suscriptores, y guardar millones de direcciones de correo\natadas a datos de emisión era un coste de privacidad que preferían no cargar.\nAmbas razones son buenas. Aun así quitó el único mensaje que llegaba a una\npersona cuando el automatismo se paraba.",[29,242,244],{"id":243},"lovable-o-vercel-renuevan-mi-certificado-por-mí","¿Lovable o Vercel renuevan mi certificado por mí?",[10,246,247],{},"Mientras tu aplicación esté en el subdominio del propio builder, las dos fechas\nson suyas y ninguna es algo que tú puedas hacer mal.",[10,249,250,251,254,255,258,259,262],{},"En ",[40,252,253],{},"tuapp.lovable.app",", o en una dirección de ",[40,256,257],{},"vercel.app"," o ",[40,260,261],{},"netlify.app",", la\nplataforma es dueña del nombre, renueva el registro y emite y renueva el\ncertificado. Nuestra propia comprobación de dominio ni siquiera los consulta.\nInforma de que la aplicación está en un dominio gestionado por una plataforma y\nde que aquí no hay nada que tú tengas que seguir.",[10,264,265],{},"Conectar un dominio propio mueve una de las dos cosas a tu lado seguro y la otra\na veces:",[137,267,268,281],{},[140,269,270],{},[143,271,272,275,278],{},[146,273,274],{},"Qué",[146,276,277],{},"En un subdominio del builder",[146,279,280],{},"En tu propio dominio",[156,282,283,294,305,316],{},[143,284,285,288,291],{},[161,286,287],{},"De quién es el nombre",[161,289,290],{},"De la plataforma",[161,292,293],{},"Tuyo, a través de tu registrador",[143,295,296,299,302],{},[161,297,298],{},"Quién renueva el registro",[161,300,301],{},"La plataforma, automáticamente",[161,303,304],{},"Tú, con una tarjeta",[143,306,307,310,313],{},[161,308,309],{},"Quién emite y renueva el certificado",[161,311,312],{},"La plataforma",[161,314,315],{},"Normalmente tu alojamiento, automáticamente, para tu dominio",[143,317,318,321,324],{},[161,319,320],{},"Quién se entera cuando se rompe",[161,322,323],{},"No hace falta que nadie",[161,325,326],{},"Tú, si algo está mirando",[10,328,329],{},"La fila de la renovación es la que sorprende a la gente. En el builder no lo\nanuncia nada. Añades un dominio, la aplicación carga en él, y ahora tienes una\nentrada de calendario que nunca escribiste.",[29,331,333],{"id":332},"cómo-compruebo-ahora-mismo-las-dos-cosas","¿Cómo compruebo ahora mismo las dos cosas?",[10,335,336],{},"Desde fuera, sin entrar en ningún sitio.",[10,338,339,342],{},[20,340,341],{},"El certificado."," Abre tu aplicación, haz clic en el candado de la barra de\ndirecciones, abre los detalles del certificado y lee la fecha de fin de validez.\nEn un certificado estándar de 90 días, más de 30 días por delante significa que\nla renovación está funcionando. Menos de 30 significa que la renovación que ya\ntendría que haber ocurrido no ocurrió.",[10,344,345,348],{},[20,346,347],{},"El dominio."," Entra en tu registrador y lee tres cosas. La fecha de caducidad.\nSi la tarjeta que hay detrás de la renovación automática sigue siendo válida,\nporque la renovación automática con una tarjeta muerta es la forma más habitual\nen que esto le pasa a alguien que estaba seguro de que no podía pasarle. Y la\ndirección de correo de la cuenta, porque ahí es donde irá cada aviso que te\ncorresponde.",[10,350,351,354,355,359],{},[20,352,353],{},"Las dos a la vez."," Nuestro escaneo gratuito lee ambas desde fuera, junto con\notras siete comprobaciones, en unos 20 segundos y sin cuenta:\n",[51,356,358],{"href":357},"\u002Fsecurity-scanner","escanea tu aplicación",". Imprime la fecha de fin del\ncertificado y, para un dominio que registraste tú, la del registro. En un\nsubdominio del builder lo dice, en lugar de inventarte una fecha.",[29,361,363],{"id":362},"qué-encontramos-en-30998-aplicaciones","Qué encontramos en 30.998 aplicaciones",[10,365,366],{},"Los dos hallazgos son raros, y cada uno de ellos era de alguien que había\nconectado un dominio propio.",[10,368,369,370,374],{},"Entre el 12 y el 14 de agosto de 2026 pasamos las mismas nueve comprobaciones\nexternas sobre 30.998 aplicaciones en línea construidas con Lovable, Bolt, v0,\nReplit y Base44. De las aplicaciones en las que cada comprobación obtuvo\nrespuesta, 55 de 30.980 tenían un dominio caducado o a punto de caducar, y 32 de\n30.851 tenían un certificado caducado, a punto de caducar o no confiable. Los\nnúmeros completos están en\n",[51,371,373],{"href":372},"\u002Fresearch\u002Fvibe-coded-app-security-2026","nuestro informe de escaneo",".",[137,376,377,387],{},[140,378,379],{},[143,380,381,384],{},[146,382,383],{},"Hallazgo",[146,385,386],{},"Aplicaciones",[156,388,389,397,405,413,421],{},[143,390,391,394],{},[161,392,393],{},"Dominio que caduca en menos de 60 días",[161,395,396],{},"54",[143,398,399,402],{},[161,400,401],{},"Dominio ya caducado",[161,403,404],{},"1",[143,406,407,410],{},[161,408,409],{},"Certificado que caduca en menos de 30 días",[161,411,412],{},"19",[143,414,415,418],{},[161,416,417],{},"Certificado ya caducado",[161,419,420],{},"5",[143,422,423,426],{},[161,424,425],{},"Certificado en el que no confía ningún navegador",[161,427,428],{},"8",[10,430,431,432,435],{},"Son 87 aplicaciones, que suena a error de redondeo hasta que preguntas quiénes\neran. 1.090 de los escaneos de esa tanda fueron sobre una aplicación cuyo dueño\nhabía registrado el dominio. ",[20,433,434],{},"Las 87 estaban en ese grupo",", y ni una sola\naplicación en un subdominio del builder llevaba ninguno de los dos hallazgos.\nEntre las aplicaciones que pueden tener este problema, eso es aproximadamente una\nde cada doce.",[10,437,438],{},"Casi toda esa columna es un aviso y no una caída, y esa es la parte útil: alguien\ntodavía estaba a tiempo. Cinco de los dominios estaban dentro de los siete días y\nuno ya se había ido. Trece de las aplicaciones estaban enseñándole a cada\nvisitante una advertencia del navegador en el momento en que miramos, cinco con\nun certificado caducado y ocho con uno en el que no confía nada.",[10,440,441],{},"En los dos casos es una fecha que pasa mientras nadie mira, y ese es justo el\ntipo de problema para el que algo que comprueba cada hora sirve de verdad.",[10,443,444,448,449,452],{},[51,445,447],{"href":446},"\u002Fpricing","Reeve Monitor"," vuelve a pasar las nueve comprobaciones cada hora sobre\nun máximo de tres aplicaciones, vigila la disponibilidad cada 60 segundos y envía\nun informe mensual. Con estos dos hallazgos hace algo que no hace con ningún\notro: te escribe cuando un certificado o un registro se está acabando ",[20,450,451],{},"aunque tu\nnota no haya cambiado",". Monitor cuesta $12 al mes de tarifa de lista, con siete\ndías gratis antes del primer cobro, y la página de precios está a veces por\ndebajo de la cifra de aquí y nunca por encima.",[10,454,455,456,374],{},"Monitor vigila y nada más. Si además quieres una copia de tu base de datos\nguardada en un sitio al que tu builder no llega,\n",[51,457,459],{"href":458},"\u002Fsupabase-backups","eso es Care, y cubre Supabase",[29,461,463],{"id":462},"qué-hacer-ahora-mismo","Qué hacer ahora mismo",[465,466,467],"key-takeaways",{},[468,469,470,474,477,480,483,486],"ul",{},[471,472,473],"li",{},"Lee la fecha de fin de validez de tu certificado desde el candado de la barra de direcciones. Más de 30 días por delante significa que la renovación funciona.",[471,475,476],{},"Entra en tu registrador y lee la fecha de caducidad y la tarjeta que hay detrás de la renovación automática. Una tarjeta muerta es como falla la renovación automática.",[471,478,479],{},"Pon las dos fechas en el calendario que de verdad lees, un mes antes de cada una.",[471,481,482],{},"Si ya hay una advertencia en pantalla, lee primero el código de debajo. Un error de fecha pide un certificado nuevo; un error de autoridad pide uno distinto, y renovar no lo toca.",[471,484,485],{},"Si un dominio ya caducó, renuévalo hoy. Cada etapa a partir de esta cuesta más que la anterior, y después del periodo de recuperación ya no te toca a ti renovarlo.",[471,487,488],{},"Si sigues en el subdominio de tu builder, ninguna de las dos cosas es tuya todavía. Llegan con tu dominio propio, el mismo día.",[10,490,491,492,496],{},"Ninguno de los dos es un error que alguien haya cometido dentro de tu\naplicación, y por eso es tan fácil dejarlos fuera de la lista. Ponlos. Si\nprefieres resolverlo todo de una vez, la\n",[51,493,495],{"href":494},"\u002Fchecklist","lista de seguridad en 10 minutos"," cubre las nueve comprobaciones en\nel orden en el que merece la pena hacerlas.",{"title":498,"searchDepth":499,"depth":499,"links":500},"",3,[501,503,504,505,506,507,508,509],{"id":31,"depth":502,"text":32},2,{"id":95,"depth":502,"text":96},{"id":111,"depth":502,"text":112},{"id":207,"depth":502,"text":208},{"id":243,"depth":502,"text":244},{"id":332,"depth":502,"text":333},{"id":362,"depth":502,"text":363},{"id":462,"depth":502,"text":463},"Fundamentos de seguridad","\u002Fblog\u002Fdomain-and-certificate-expiry\u002Fcover-1200x630.png","Dos fichas altas, cada una con un sello al pie. La de la izquierda está encendida en el color de acento; la de la derecha queda en sombra y con el color apagado.","Tu dominio caducó y tu web está caída. Aquí tienes el reloj que acaba de arrancar, por qué el certificado es el menor problema, y cómo comprobar ambos.",false,"md",[517,519,521,524,527],{"q":32,"a":518},"Primero se apaga tu aplicación, y el nombre sigue siendo recuperable durante un tiempo después. Para .com y los demás dominios genéricos, tu registrador lo mantiene renovable al precio normal durante una ventana que elige él, e ICANN exige que tu DNS deje de funcionar durante al menos los últimos ocho días de esa ventana. Después de que el registrador lo borre arranca un Redemption Grace Period de 30 días, durante el cual solo tú puedes restaurarlo, y solo a través de ese registrador, pagando una tasa. Luego unos cinco días de pending delete en los que nadie puede hacer nada, y después el nombre queda disponible para el siguiente que lo pida.",{"q":96,"a":520},"Sí, una vez que ha pasado los periodos de recuperación y de pending delete y ha quedado liberado. A partir de ahí el nombre se registra por orden de llegada, y hay empresas cuyo producto entero consiste en pedir un nombre en el segundo en que se libera. Todo lo que apuntaba a tu aplicación sigue apuntando al nombre: los marcadores, el enlace de tu correo de bienvenida, la dirección en tu ficha de la tienda de apps. Puedes intentar recomprarlo a quien lo consiguió, al precio que decida él.",{"q":522,"a":523},"¿Por qué mi web dice hoy «no es seguro» si ayer estaba bien?","Son dos problemas distintos, y la pantalla te dice cuál tienes. Un aviso gris en la barra de direcciones, con tu página cargando igualmente debajo, significa que la página llegó por HTTP simple y que no había ningún certificado de por medio. Un certificado caducado o no confiable no es un aviso: sustituye tu aplicación por una advertencia a página completa que el visitante tiene que atravesar haciendo clic.",{"q":525,"a":526},"¿Lovable o Vercel renuevan el certificado por mí?","En su propio subdominio todo es suyo y no hay nada que tú tengas que vigilar. En cuanto conectas un dominio propio, el registro es tuyo a partir de ese momento, y el certificado normalmente lo sigue emitiendo y renovando quien aloja la aplicación. Ese reparto es lo que hace que una renovación rota sea tan fácil de pasar por alto: nadie te dice que se estaba haciendo por ti, y deja de hacerse sin que ningún error le llegue a nadie.",{"q":528,"a":529},"¿Con cuánta antelación debería avisarme algo?","Un mes para cada uno, porque es más o menos cuando los dos vuelven a arreglarse sin dramas. Un certificado estándar se renueva unos 30 días antes de vencer, así que un certificado al que le quedan menos de 30 días ya te está diciendo que la renovación no funcionó. En un dominio conviene pillar la fecha antes de que el registro caduque siquiera, porque cada etapa posterior cuesta más que la anterior.","\u002Fblog\u002Fdomain-and-certificate-expiry\u002Fcard-800x500.png",[532,533,534,535,536,537,538,539],"dominio caducado web caída","certificado ssl caducado","mi web dice no es seguro","comprobar caducidad del dominio","qué pasa cuando caduca un certificado","pueden quedarse con mi dominio","certificado https no se renueva","renovar dominio antes de que caduque",{},true,"Dominio caducado, web caída: qué pasa ahora","\u002Fblog\u002Fdomain-and-certificate-expiry","2026-09-22",{"title":5,"description":513},"blog\u002Fdomain-and-certificate-expiry",[548,549,550,551],"Si tu dominio caducó y tu web está caída, hay un reloj corriendo. Para .com y la mayoría de los dominios genéricos son unas semanas al precio normal, luego 30 días para recuperarlo pagando una tasa, y luego unos cinco días en los que ya no se puede hacer nada.","Un certificado que vence hace ruido y lo puedes sustituir hoy mismo. Un dominio liberado pertenece a quien lo registre después, junto con cada enlace que alguien haya hecho hacia tu aplicación.","Sobre el dominio tu registrador está obligado a avisarte, y lo hace. Sobre el certificado no está obligado a avisarte nadie, y Let’s Encrypt dejó de enviar sus propios correos de caducidad el 4 de junio de 2025.","En un subdominio del builder ninguno de los dos es tuyo: la plataforma es dueña del nombre y del certificado y renueva los dos. Pasan a ser tuyos el día en que conectas un dominio propio.","-GiNKUf-Hcm6OOYutSclcoKlq_Oqo1Kdo0btc6KLYBs",[554,560,566,572,578,584,590,596,602,608,614,620,626,633,639,645,650,656,662,668,669,675,681,687,693,699,705,711,717,723,729,735,741,747,753,759,765,771,777,783,789,795,801,807,813,819,825,831,837,843,849,855,861,867,872,878,884,890,895,901],{"path":555,"title":556,"description":557,"published":558,"category":510,"image":559,"draft":514},"\u002Fblog\u002Fbase44-security-scan","Escaneo de seguridad de Base44: lo que solo él ve","El escaneo de seguridad de Base44 revisa siete tipos de problema desde dentro. Esta es la mitad que lee y nadie más puede leer, y la mitad que nunca mira.","2026-10-10","\u002Fblog\u002Fbase44-security-scan\u002Fcard-800x500.png",{"path":561,"title":562,"description":563,"published":564,"category":510,"image":565,"draft":514},"\u002Fblog\u002Fapi-key-leaked-what-to-do","Tu clave API se filtró. El orden en el que hay que actuar","Una clave API se filtró y no sabes por dónde empezar. No todas las claves de tu frontend lo son, y el orden importa más que la velocidad.","2026-10-09","\u002Fblog\u002Fapi-key-leaked-what-to-do\u002Fcard-800x500.png",{"path":567,"title":568,"description":569,"published":570,"category":510,"image":571,"draft":514},"\u002Fblog\u002Finfinite-recursion-in-policy-for-relation","\"Infinite recursion detected in policy\" sin desactivar RLS","\"Infinite recursion detected in policy for relation\" significa que tu policy preguntó a la tabla que protege. Así se rompe el círculo.","2026-10-08","\u002Fblog\u002Finfinite-recursion-in-policy-for-relation\u002Fcard-800x500.png",{"path":573,"title":574,"description":575,"published":576,"category":510,"image":577,"draft":514},"\u002Fblog\u002Fno-api-key-found-in-request","\"No API key found in request\" en Supabase, y el arreglo equivocado","\"No API key found in request\" significa que tu petición llegó a Supabase sin clave. Casi todas las respuestas apuntan a las reglas de tu base de datos.","2026-10-07","\u002Fblog\u002Fno-api-key-found-in-request\u002Fcard-800x500.png",{"path":579,"title":580,"description":581,"published":582,"category":510,"image":583,"draft":514},"\u002Fblog\u002Fis-base44-safe","¿Es seguro Base44? Lo que vimos en 5.442 apps Base44","¿Es seguro Base44? Pasamos nueve comprobaciones a 5.442 apps Base44 en producción. Casi todas sacaron B por motivos que su dueño nunca eligió.","2026-10-06","\u002Fblog\u002Fis-base44-safe\u002Fcard-800x500.png",{"path":585,"title":586,"description":587,"published":588,"category":510,"image":589,"draft":514},"\u002Fblog\u002Fmove-a-secret-to-an-edge-function","Ocultar una clave API: muévela a una Edge Function de Supabase","Ocultar una clave API significa sacarla del navegador, y una Edge Function de Supabase es el sitio más pequeño donde ponerla. Dos pasos importan más.","2026-10-05","\u002Fblog\u002Fmove-a-secret-to-an-edge-function\u002Fcard-800x500.png",{"path":591,"title":592,"description":593,"published":594,"category":510,"image":595,"draft":514},"\u002Fblog\u002Fenv-file-exposed-on-your-server","¿Tu archivo .env está expuesto? Las doce rutas a revisar","¿Tu archivo .env está expuesto en tu propio servidor web? Doce direcciones te lo dicen, y un acierto significa que todo lo que contiene ya es público.","2026-10-04","\u002Fblog\u002Fenv-file-exposed-on-your-server\u002Fcard-800x500.png",{"path":597,"title":598,"description":599,"published":600,"category":510,"image":601,"draft":514},"\u002Fblog\u002Fis-v0-safe","Seguridad de v0: las 1.790 aplicaciones escaneadas sacaron una A","Seguridad de v0, medida en 1.790 aplicaciones v0 en vivo: todas sacaron A. Solo 17 nombraban una base de datos, y eso es casi todo lo que mide la A.","2026-10-03","\u002Fblog\u002Fis-v0-safe\u002Fcard-800x500.png",{"path":603,"title":604,"description":605,"published":606,"category":510,"image":607,"draft":514},"\u002Fblog\u002Fis-bolt-safe","¿Es seguro Bolt? Lo que vimos en 1.123 aplicaciones Bolt","¿Es seguro Bolt? Pasamos 1.123 aplicaciones Bolt en vivo por nueve comprobaciones. El hosting salió limpio. Los hallazgos eran claves y tablas abiertas dentro.","2026-10-02","\u002Fblog\u002Fis-bolt-safe\u002Fcard-800x500.png",{"path":609,"title":610,"description":611,"published":612,"category":510,"image":613,"draft":514},"\u002Fblog\u002Fis-supabase-down-or-your-app","¿Supabase está caído o es tu app? Cómo distinguirlo","¿Supabase está caído o es tu app? Un proyecto pausado, una base de datos llena y un fallo tuyo parecen lo mismo. Cuatro comprobaciones los separan.","2026-10-01","\u002Fblog\u002Fis-supabase-down-or-your-app\u002Fcard-800x500.png",{"path":615,"title":616,"description":617,"published":618,"category":510,"image":619,"draft":514},"\u002Fblog\u002Fdoes-supabase-encrypt-my-data","¿Supabase cifra mis datos? Sí. Esto es lo que detiene","¿Supabase cifra los datos? Sí: AES-256 en reposo, TLS en tránsito, SOC 2 e ISO 27001. Qué cubre cada uno, y la fuga que ninguno de ellos detiene.","2026-09-30","\u002Fblog\u002Fdoes-supabase-encrypt-my-data\u002Fcard-800x500.png",{"path":621,"title":622,"description":623,"published":624,"category":510,"image":625,"draft":514},"\u002Fblog\u002Fsupabase-free-plan-limits","¿Cuánto cuesta Supabase? Los límites del plan gratuito","Los límites del plan gratuito de Supabase: 500 MB de base de datos, 5 GB de egress y ningún backup. Qué pasa en cada uno y qué cambia Pro por $25.","2026-09-29","\u002Fblog\u002Fsupabase-free-plan-limits\u002Fcard-800x500.png",{"path":627,"title":628,"description":629,"published":630,"category":631,"image":632,"draft":514},"\u002Fblog\u002Ftest-your-supabase-backup","Prueba tu backup de Supabase antes del día que lo necesites","Cómo probar tu backup de Supabase: restaurarlo en un proyecto de prueba, contar filas, iniciar sesión y buscar la línea que le falta a un archivo cortado.","2026-09-28","Backups","\u002Fblog\u002Ftest-your-supabase-backup\u002Fcard-800x500.png",{"path":634,"title":635,"description":636,"published":637,"category":631,"image":638,"draft":514},"\u002Fblog\u002Fsupabase-backup-github-action","Backup gratis de Supabase con una GitHub Action, y la trampa","Un backup de Supabase con GitHub Action es gratis y sirve a muchas apps. El workflow, el connection string correcto y el egress de cada ejecución.","2026-09-27","\u002Fblog\u002Fsupabase-backup-github-action\u002Fcard-800x500.png",{"path":640,"title":641,"description":642,"published":643,"category":631,"image":644,"draft":514},"\u002Fblog\u002Fdownload-your-supabase-backup","Por qué no puedes descargar tu backup de Supabase","No puedes descargar tu backup de Supabase en un proyecto actual: la copia diaria es una instantánea física. Cómo comprobarlo y tener tu propia copia.","2026-09-26","\u002Fblog\u002Fdownload-your-supabase-backup\u002Fcard-800x500.png",{"path":646,"title":647,"description":648,"published":643,"category":510,"image":649,"draft":514},"\u002Fblog\u002Fsupabase-permission-denied-for-table","Supabase \"permission denied for table\": el grant que falta","Desde el 30 de octubre, una tabla nueva de Supabase responde \"permission denied for table\" hasta que le das acceso. El grant del email es la mitad del arreglo.","\u002Fblog\u002Fsupabase-permission-denied-for-table\u002Fcard-800x500.png",{"path":651,"title":652,"description":653,"published":654,"category":510,"image":655,"draft":514},"\u002Fblog\u002Fopen-api-endpoint-exposed","¿Un endpoint de API abierto es un problema? Mira el JSON","Tu escaneo señaló un endpoint de API abierto. Que importe depende de lo que devolvió, y la mayoría de los que encontramos eran de la plataforma.","2026-09-25","\u002Fblog\u002Fopen-api-endpoint-exposed\u002Fcard-800x500.png",{"path":657,"title":658,"description":659,"published":660,"category":510,"image":661,"draft":514},"\u002Fblog\u002Flovable-security-scan","Escaneo de seguridad de Lovable: lo que no puede probar","Escaneo de seguridad de Lovable: qué revisan el Quick scan y el Deep scan, cuándo corre cada uno, y lo único que ningún escaneo desde dentro puede probar.","2026-09-24","\u002Fblog\u002Flovable-security-scan\u002Fcard-800x500.png",{"path":663,"title":664,"description":665,"published":666,"category":631,"image":667,"draft":514},"\u002Fblog\u002Fsupabase-backup-auth-users","Por qué tu dump de Supabase no tiene usuarios dentro","Ejecuta supabase db dump por sí solo y obtienes la forma de tu base de datos y ninguna de sus filas, sin el esquema auth donde viven tus usuarios.","2026-09-23","\u002Fblog\u002Fsupabase-backup-auth-users\u002Fcard-800x500.png",{"path":543,"title":5,"description":513,"published":544,"category":510,"image":530,"draft":514},{"path":670,"title":671,"description":672,"published":673,"category":510,"image":674,"draft":514},"\u002Fblog\u002Fis-lovable-safe","¿Es seguro Lovable? Lo que vimos en 18.554 aplicaciones Lovable","¿Es seguro Lovable? Pasamos 18.554 aplicaciones Lovable por nueve comprobaciones. La plataforma fue la más limpia de cinco. Los hallazgos estaban dentro.","2026-09-21","\u002Fblog\u002Fis-lovable-safe\u002Fcard-800x500.png",{"path":676,"title":677,"description":678,"published":679,"category":510,"image":680,"draft":514},"\u002Fblog\u002Fvibe-coded-app-security-checklist","La lista de seguridad del vibe coding, en nueve comprobaciones","Una lista de seguridad del vibe coding con nueve puntos, cada uno verificable en tu app desde fuera por cualquiera, y cada uno con una prueba de una línea.","2026-09-20","\u002Fblog\u002Fvibe-coded-app-security-checklist\u002Fcard-800x500.png",{"path":682,"title":683,"description":684,"published":685,"category":510,"image":686,"draft":514},"\u002Fblog\u002Fstripe-secret-key-in-frontend","Una clave secreta de Stripe en tu frontend puede mover dinero","Una clave secreta de Stripe expuesta en tu frontend puede reembolsar, cobrar y leer cada ficha de cliente que tienes. Tu clave pk_live_ sí debe estar ahí.","2026-09-19","\u002Fblog\u002Fstripe-secret-key-in-frontend\u002Fcard-800x500.png",{"path":688,"title":689,"description":690,"published":691,"category":510,"image":692,"draft":514},"\u002Fblog\u002Fvite-and-next-public-env-vars","Variables de entorno de Vite expuestas: el prefijo dice publica esto","Variables de entorno de Vite expuestas en tu app: hicieron lo que pedía el prefijo. VITE_ y NEXT_PUBLIC_ significan publica esto, y la IA nunca supo el coste.","2026-09-18","\u002Fblog\u002Fvite-and-next-public-env-vars\u002Fcard-800x500.png",{"path":694,"title":695,"description":696,"published":697,"category":510,"image":698,"draft":514},"\u002Fblog\u002Fbase44-source-maps","Seguridad en Base44: qué marca un escaneo y qué te toca arreglar a ti","Seguridad en Base44 en 5.438 apps escaneadas: tres hallazgos en casi todas son de la plataforma, el source map es la insignia de Base44 y lo tuyo es poco.","2026-09-17","\u002Fblog\u002Fbase44-source-maps\u002Fcard-800x500.png",{"path":700,"title":701,"description":702,"published":703,"category":510,"image":704,"draft":514},"\u002Fblog\u002Fis-cursor-ai-safe","¿Es seguro Cursor AI? El editor, el código y la app que publicaste","¿Es seguro Cursor AI? Tres preguntas en una búsqueda: qué guarda Cursor, en qué falla el código que escribe y si la app que publicaste está abierta.","2026-09-16","\u002Fblog\u002Fis-cursor-ai-safe\u002Fcard-800x500.png",{"path":706,"title":707,"description":708,"published":709,"category":510,"image":710,"draft":514},"\u002Fblog\u002Fis-replit-safe","¿Es seguro Replit? Lo que vimos en 3.042 aplicaciones Replit en vivo","¿Es seguro Replit? Pasamos 3.042 aplicaciones Replit en vivo por nueve comprobaciones externas. Los hallazgos estaban en la aplicación publicada, no en el host.","2026-09-15","\u002Fblog\u002Fis-replit-safe\u002Fcard-800x500.png",{"path":712,"title":713,"description":714,"published":715,"category":631,"image":716,"draft":514},"\u002Fblog\u002Fsupabase-storage-backup","Supabase storage backup: tu copia de la base no tiene archivos","Un Supabase storage backup es una tarea aparte. Las copias de la base guardan la lista de tus archivos y ninguno de ellos, así que cada upload queda roto.","2026-09-14","\u002Fblog\u002Fsupabase-storage-backup\u002Fcard-800x500.png",{"path":718,"title":719,"description":720,"published":721,"category":631,"image":722,"draft":514},"\u002Fblog\u002Fsupabase-point-in-time-recovery","Point-in-time recovery de Supabase: precio y límites","El point-in-time recovery de Supabase rebobina tu base de datos a cualquier segundo de la última semana. Cuesta $100 al mes sobre Pro y solo cubre la base.","2026-09-13","\u002Fblog\u002Fsupabase-point-in-time-recovery\u002Fcard-800x500.png",{"path":724,"title":725,"description":726,"published":727,"category":631,"image":728,"draft":514},"\u002Fblog\u002Fsupabase-project-paused-recover","¿Proyecto de Supabase pausado? Tus datos siguen ahí","Supabase pausó tu proyecto tras una semana sin actividad. No se ha borrado nada, Restaurar está junto al nombre y tienes un año antes de que eso cambie.","2026-09-12","\u002Fblog\u002Fsupabase-project-paused-recover\u002Fcard-800x500.png",{"path":730,"title":731,"description":732,"published":733,"category":510,"image":734,"draft":514},"\u002Fblog\u002Fsafest-ai-app-builder","¿Qué builder de apps con IA es más seguro? 30.998 apps escaneadas","¿Qué builder de apps con IA es más seguro? Escaneamos 30.998 apps activas de Lovable, Base44, Replit, v0 y Bolt. El builder no es lo que decide tu nota.","2026-09-11","\u002Fblog\u002Fsafest-ai-app-builder\u002Fcard-800x500.png",{"path":736,"title":737,"description":738,"published":739,"category":510,"image":740,"draft":514},"\u002Fblog\u002Fenable-rls-on-every-supabase-table","Activa Row Level Security en cada tabla de Supabase y compruébalo","Activar Row Level Security en Supabase sin política cierra la tabla del todo. Una política sin el interruptor no hace nada. Aquí tienes el SQL y la prueba.","2026-09-10","\u002Fblog\u002Fenable-rls-on-every-supabase-table\u002Fcard-800x500.png",{"path":742,"title":743,"description":744,"published":745,"category":510,"image":746,"draft":514},"\u002Fblog\u002Fsupabase-rls-disabled-in-public","Supabase \"RLS disabled in public\": lo que el aviso no ve","Supabase marca \"RLS disabled in public\" como error. No dice nada de la política de lectura que deja tu tabla igual de abierta a cualquiera.","2026-09-09","\u002Fblog\u002Fsupabase-rls-disabled-in-public\u002Fcard-800x500.png",{"path":748,"title":749,"description":750,"published":751,"category":510,"image":752,"draft":514},"\u002Fblog\u002Frotate-supabase-service-role-key","Cómo rotar una clave service_role de Supabase filtrada","Supabase dice que primero cierres la fuga. Otras guías dicen que rotes ya. Cuál es lo correcto depende de dónde se filtró tu clave service_role.","2026-09-08","\u002Fblog\u002Frotate-supabase-service-role-key\u002Fcard-800x500.png",{"path":754,"title":755,"description":756,"published":757,"category":510,"image":758,"draft":514},"\u002Fblog\u002Fvibe-coding-security-scanners-compared","Escáneres de seguridad vibe coding comparados, el nuestro incluido","El mejor escáner de seguridad para vibe coding depende de tres preguntas que ninguna lista de funciones responde. Diez herramientas, con precios.","2026-09-07","\u002Fblog\u002Fvibe-coding-security-scanners-compared\u002Fcard-800x500.png",{"path":760,"title":761,"description":762,"published":763,"category":510,"image":764,"draft":514},"\u002Fblog\u002Fsupabase-security-checker","Supabase security checker: haz tú mismo las cinco comprobaciones","Un Supabase security checker lee tu app publicada en lugar de la configuración de tu proyecto. Estas son las cinco comprobaciones y cómo hacer cada una.","2026-09-06","\u002Fblog\u002Fsupabase-security-checker\u002Fcard-800x500.png",{"path":766,"title":767,"description":768,"published":769,"category":510,"image":770,"draft":514},"\u002Fblog\u002Fvibe-coding-security-scanner","Escáner de seguridad para vibe coding: qué se le escapa","Un escáner de seguridad para vibe coding lee tu app en vivo desde fuera. Qué cubre eso, las cuatro cosas que no puede ver y cómo leer el resultado.","2026-09-05","\u002Fblog\u002Fvibe-coding-security-scanner\u002Fcard-800x500.png",{"path":772,"title":773,"description":774,"published":775,"category":510,"image":776,"draft":514},"\u002Fblog\u002Fmissing-security-headers","Faltan cabeceras de seguridad: cuándo importa de verdad","Que falten cabeceras de seguridad es el hallazgo que más imprime nuestro escáner. Contra qué protegen y cuándo son la línea menos urgente de tu informe.","2026-09-04","\u002Fblog\u002Fmissing-security-headers\u002Fcard-800x500.png",{"path":778,"title":779,"description":780,"published":781,"category":510,"image":782,"draft":514},"\u002Fblog\u002Fopenai-api-key-exposed-in-frontend","Tu clave de API de OpenAI está expuesta en tu frontend. Rótala.","Una clave de API de OpenAI expuesta en tu frontend no se puede atar a un dominio. Rótala hoy, mueve la llamada a tu servidor y limita el gasto.","2026-09-03","\u002Fblog\u002Fopenai-api-key-exposed-in-frontend\u002Fcard-800x500.png",{"path":784,"title":785,"description":786,"published":787,"category":510,"image":788,"draft":514},"\u002Fblog\u002Fwhat-secrets-leak-from-vibe-coded-apps","Clave de API expuesta en el frontend: qué llevan 30.998 apps","Una clave de API expuesta en tu frontend suele ser una clave de Google Maps. Escaneamos 30.998 apps vibe-coded y contamos qué secretos se filtran de verdad.","2026-09-02","\u002Fblog\u002Fwhat-secrets-leak-from-vibe-coded-apps\u002Fcard-800x500.png",{"path":790,"title":791,"description":792,"published":793,"category":631,"image":794,"draft":514},"\u002Fblog\u002Fsupabase-backup-tools-compared","Herramientas de backup de Supabase comparadas, la nuestra incluida","Cuatro tipos de herramienta de backup de Supabase, qué copia cada una y cuándo una GitHub Action gratuita le gana a pagar a cualquiera, nosotros incluidos.","2026-09-01","\u002Fblog\u002Fsupabase-backup-tools-compared\u002Fcard-800x500.png",{"path":796,"title":797,"description":798,"published":799,"category":510,"image":800,"draft":514},"\u002Fblog\u002Freplit-secrets-explained","Cómo usar secrets en Replit, y qué se publica de todos modos","Cómo usar secrets en Replit: añadir uno, leerlo y arreglar las dos causas del undefined. Y las claves que la herramienta Secrets no puede mantener privadas.","2026-08-31","\u002Fblog\u002Freplit-secrets-explained\u002Fcard-800x500.png",{"path":802,"title":803,"description":804,"published":805,"category":631,"image":806,"draft":514},"\u002Fblog\u002Fback-up-supabase-free-tier","Backups del plan gratuito de Supabase: cómo hacer uno sin terminal","No hay backups en el plan gratuito de Supabase: la copia tienes que hacerla tú. Cómo sacarla desde el panel y qué deja fuera la vía CSV.","2026-08-30","\u002Fblog\u002Fback-up-supabase-free-tier\u002Fcard-800x500.png",{"path":808,"title":809,"description":810,"published":811,"category":510,"image":812,"draft":514},"\u002Fblog\u002Fis-supabase-secure","¿Supabase es seguro? Sí. Tu proyecto es otra pregunta","¿Supabase es seguro? La plataforma está auditada, cifrada y sometida a pentests. Su propia documentación dice dónde termina eso y empiezan tus ajustes.","2026-08-29","\u002Fblog\u002Fis-supabase-secure\u002Fcard-800x500.png",{"path":814,"title":815,"description":816,"published":817,"category":510,"image":818,"draft":514},"\u002Fblog\u002Fwhere-to-find-supabase-api-keys","Dónde están tus claves API de Supabase: anon, service_role y URL","La URL del proyecto, la clave anon y la clave service_role están en una sola página del panel. Aquí tienes dónde está, y cuál de los cuatro va en tu app.","2026-08-28","\u002Fblog\u002Fwhere-to-find-supabase-api-keys\u002Fcard-800x500.png",{"path":820,"title":821,"description":822,"published":823,"category":510,"image":824,"draft":514},"\u002Fblog\u002Fnew-row-violates-row-level-security-policy","New row violates row-level security policy en Supabase. ¿Y ahora?","\"New row violates row-level security policy\" significa que Supabase rechazó una escritura. El arreglo rápido vuelve a abrir la tabla para cualquiera.","2026-08-27","\u002Fblog\u002Fnew-row-violates-row-level-security-policy\u002Fcard-800x500.png",{"path":826,"title":827,"description":828,"published":829,"category":510,"image":830,"draft":514},"\u002Fblog\u002Fcors-wildcard-security-risk","¿Es un comodín CORS un riesgo de seguridad? Casi nunca.","¿Es un comodín CORS un riesgo de seguridad? Casi siempre es el ajuste por defecto de tu builder y no entrega nada que tu servidor no diera ya a cualquiera.","2026-08-26","\u002Fblog\u002Fcors-wildcard-security-risk\u002Fcard-800x500.png",{"path":832,"title":833,"description":834,"published":835,"category":631,"image":836,"draft":514},"\u002Fblog\u002Fsupabase-branching-is-not-a-backup","Supabase branching no es un backup. Solo va hacia adelante.","Por qué el branching de Supabase no es un backup: una rama arranca sin tus datos y un merge solo mueve el esquema. Para qué sirve y qué usar en su lugar.","2026-08-25","\u002Fblog\u002Fsupabase-branching-is-not-a-backup\u002Fcard-800x500.png",{"path":838,"title":839,"description":840,"published":841,"category":631,"image":842,"draft":514},"\u002Fblog\u002Fhow-to-restore-a-supabase-backup","Cómo restaurar un backup de Supabase, y qué se rompe después","Cómo restaurar un backup de Supabase desde el panel o desde un archivo de volcado, qué reemplaza la restauración y por qué tu app puede seguir rota al terminar.","2026-08-24","\u002Fblog\u002Fhow-to-restore-a-supabase-backup\u002Fcard-800x500.png",{"path":844,"title":845,"description":846,"published":847,"category":510,"image":848,"draft":514},"\u002Fblog\u002Fsupabase-storage-bucket-public","Tu bucket de Supabase Storage es público. ¿Es un problema?","Un bucket público de Supabase Storage significa que quien tenga la URL de un archivo puede abrirlo. No significa que alguien pueda listar lo que hay dentro.","2026-08-23","\u002Fblog\u002Fsupabase-storage-bucket-public\u002Fcard-800x500.png",{"path":850,"title":851,"description":852,"published":853,"category":510,"image":854,"draft":514},"\u002Fblog\u002Fgoogle-api-key-exposed-in-frontend","¿Es un problema una clave de API de Google en tu frontend?","Una clave de API de Google en tu frontend es la clave que más encuentra nuestro escáner, y casi siempre no pasa nada. Un ajuste gratuito decide cuál es cuál.","2026-08-22","\u002Fblog\u002Fgoogle-api-key-exposed-in-frontend\u002Fcard-800x500.png",{"path":856,"title":857,"description":858,"published":859,"category":631,"image":860,"draft":514},"\u002Fblog\u002Fai-agent-deleted-my-database","Un agente de IA borró mis datos de Supabase. ¿Qué puedo recuperar?","Un agente de IA borró datos de tu base. Lo que puedes recuperar ya estaba decidido antes de que se ejecutara, y los próximos minutos deciden el resto.","2026-08-21","\u002Fblog\u002Fai-agent-deleted-my-database\u002Fcard-800x500.png",{"path":862,"title":863,"description":864,"published":865,"category":510,"image":866,"draft":514},"\u002Fblog\u002Fcan-anyone-read-your-supabase-database","¿Puede cualquiera leer tu base de datos Supabase? 3.680 apps","¿Puede cualquiera leer tu base de datos Supabase sin iniciar sesión? Escaneamos 30.998 apps activas hechas con builders de IA y medimos cuántas dicen que sí.","2026-08-18","\u002Fblog\u002Fcan-anyone-read-your-supabase-database\u002Fcard-800x500.png",{"path":868,"title":869,"description":870,"published":865,"category":510,"image":871,"draft":514},"\u002Fblog\u002Fsource-maps-exposed-in-production","Source maps expuestos: tu app está publicando su código original","Un source map expuesto deja que cualquiera lea el código original de tu app, comentarios incluidos. La comprobación de 30 segundos y lo que de verdad importa.","\u002Fblog\u002Fsource-maps-exposed-in-production\u002Fcard-800x500.png",{"path":873,"title":874,"description":875,"published":876,"category":510,"image":877,"draft":514},"\u002Fblog\u002Fsupabase-new-api-keys","Las nuevas claves de API de Supabase: ¿cuál va en tu app?","Supabase sustituyó anon y service_role por claves publicables y secretas. ¿Cuál pertenece a tu app y cuál no debe estar nunca?","2026-08-12","\u002Fblog\u002Fsupabase-new-api-keys\u002Fcard-800x500.png",{"path":879,"title":880,"description":881,"published":882,"category":631,"image":883,"draft":514},"\u002Fblog\u002Fdoes-supabase-back-up-my-database","¿Supabase respalda mi base de datos? Depende de tu plan.","¿Supabase respalda tu base de datos? A diario en los planes de pago, y nada en el gratuito. Cómo saber cuál tienes y qué es lo que esa copia no cubre.","2026-08-11","\u002Fblog\u002Fdoes-supabase-back-up-my-database\u002Fcard-800x500.png",{"path":885,"title":886,"description":887,"published":888,"category":510,"image":889,"draft":514},"\u002Fblog\u002Fsupabase-rls-on-but-table-still-public","Supabase Row Level Security está activado. Tu tabla sigue pública.","Activar Supabase Row Level Security no protege una tabla. Lo hacen tus políticas, y la que arregló tu app rota puede dejar entrar a cualquiera.","2026-08-10","\u002Fblog\u002Fsupabase-rls-on-but-table-still-public\u002Fcard-800x500.png",{"path":891,"title":892,"description":893,"published":888,"category":631,"image":894,"draft":514},"\u002Fblog\u002Fversion-history-is-not-a-backup","El historial de versiones no es un backup. No recupera una tabla.","Lovable y Bolt guardan un historial de versiones de tu código. Tu base de datos es un servicio aparte, y volver atrás no te devuelve tus datos.","\u002Fblog\u002Fversion-history-is-not-a-backup\u002Fcard-800x500.png",{"path":896,"title":897,"description":898,"published":899,"category":631,"image":900,"draft":514},"\u002Fblog\u002Fthree-ways-to-back-up-a-supabase-database","Tres formas de respaldar una base Supabase, y qué falta en cada una","El panel, pg_dump y un servicio gestionado. Qué guarda de verdad cada uno, qué deja fuera sin avisar y cuál sobrevive a perder la cuenta.","2026-08-09","\u002Fblog\u002Fthree-ways-to-back-up-a-supabase-database\u002Fcard-800x500.png",{"path":902,"title":903,"description":904,"published":899,"category":510,"image":905,"draft":514},"\u002Fblog\u002Fwhich-api-keys-are-safe-in-your-frontend","Qué claves de API son seguras en el navegador y cuáles no","Tu clave anon de Supabase está pensada para ser pública. Tu clave service_role no, y se salta todas las reglas que pongas. Cómo distinguirlas.","\u002Fblog\u002Fwhich-api-keys-are-safe-in-your-frontend\u002Fcard-800x500.png",1791618971516]