[{"data":1,"prerenderedAt":871},["ShallowReactive",2],{"blog-es-is-base44-safe":3,"blog-index-es":519},{"id":4,"title":5,"body":6,"category":473,"cover":474,"coverAlt":475,"description":476,"draft":477,"extension":478,"faq":479,"image":498,"keywords":499,"meta":508,"navigation":509,"ogTitle":5,"path":510,"published":511,"seo":512,"stem":513,"tldr":514,"updated":511,"__hash__":518},"blog_es\u002Fblog\u002Fis-base44-safe.md","¿Es seguro Base44? Lo que vimos en 5.442 apps Base44",{"type":7,"value":8,"toc":458},"minimark",[9,13,20,25,28,31,37,41,44,104,113,116,120,123,197,200,203,207,210,218,226,233,237,240,243,249,254,257,264,268,271,274,277,293,300,304,307,310,315,328,343,347,350,358,369,375,381,385,388,391,407,414,418,441],[10,11,12],"p",{},"Has construido algo en Base44, funciona, y estás a punto de poner gente de\nverdad encima. Así que escribiste \"is base44 safe\" en un buscador, y lo que\nvolvió fue el propio blog de Base44, sus propias páginas de producto y dos guías\nescritas a partir de ellas. Nada de eso es una respuesta, y tu propio informe de\nescaneo, si lo lanzaste, probablemente decía B y te dejó igual de a oscuras sobre\nel porqué.",[10,14,15,16],{},"Podemos responder una parte. Durante el último año hemos pasado las mismas nueve\ncomprobaciones a cada app en producción que hemos podido encontrar, y 5.442 de\nellas eran apps Base44. Esta es la parte que guía tras guía se equivoca: ",[17,18,19],"strong",{},"una\napp Base44 y una app Lovable fallan en sitios opuestos, y el informe que Base44\nte da no va, en su mayor parte, sobre ti.",[21,22,24],"h2",{"id":23},"es-seguro-base44","¿Es seguro Base44?",[10,26,27],{},"Dentro de esas tres palabras se esconden tres preguntas distintas, y separarlas\nes la mayor parte del trabajo.",[10,29,30],{},"La primera es si Base44 como empresa es de fiar para dejarle tu app. La segunda\nes si el código que escribe para ti es bueno. La tercera es si la app que\npublicaste es segura de visitar para un desconocido. Solo la tercera se puede\nmedir desde fuera, y en Base44 hasta esa vuelve respondida a medias.",[32,33],"diagram",{"alt":34,"caption":35,"src":36},"Cinco barras horizontales en una misma escala, cada una con un pequeño símbolo delante y una cifra detrás: 5.438 por cabeceras ausentes, 5.417 por una cabecera de API con comodín, 3.229 por un source map publicado, 2.705 por una dirección que responde sin inicio de sesión, y 95 por una clave publicada. Las cuatro primeras barras son gris apagado y la última turquesa.","Número de apps sobre 5.442, en una sola escala. Las barras grises las decide Base44. La turquesa es la única línea del informe que salió de algo que había en la app.","\u002Fblog\u002Fis-base44-safe\u002Fwhat-we-found-1600x680.png",[21,38,40],{"id":39},"lo-que-encontramos-en-5442-apps-base44","Lo que encontramos en 5.442 apps Base44",[10,42,43],{},"Cuatro hallazgos, en casi todas las apps, y los cuatro son de la plataforma.",[45,46,47,60],"table",{},[48,49,50],"thead",{},[51,52,53,57],"tr",{},[54,55,56],"th",{},"Lo que encontró la comprobación",[54,58,59],{},"Apps",[61,62,63,72,80,88,96],"tbody",{},[51,64,65,69],{},[66,67,68],"td",{},"Faltan cabeceras de seguridad",[66,70,71],{},"5.438",[51,73,74,77],{},[66,75,76],{},"La API responde a cualquier web",[66,78,79],{},"5.417",[51,81,82,85],{},[66,83,84],{},"Un source map publicado",[66,86,87],{},"3.229",[51,89,90,93],{},[66,91,92],{},"Una dirección que responde sin login",[66,94,95],{},"2.705",[51,97,98,101],{},[66,99,100],{},"Una clave publicada en la página",[66,102,103],{},"95",[10,105,106,107,112],{},"Las dos primeras son cabeceras de respuesta, y en una app Base44 una cabecera de\nrespuesta la pone el alojamiento de Base44, no nada que hayas escrito tú. La\ntercera y la cuarta quedan alarmantes en un informe y tampoco son tuyas: el único\nsource map que responde en una app Base44 pertenece al propio script de insignia\nde Base44, y la dirección que responde es la misma siempre. En septiembre de 2026\nvolvimos sobre 30 de las apps marcadas y\n",[108,109,111],"a",{"href":110},"\u002Fblog\u002Fbase44-source-maps","escribimos qué significan de verdad esas dos líneas",",\nporque son las dos líneas peor leídas de un informe de Base44.",[10,114,115],{},"Quedan 103 apps de 5.442 que llevan en la página algo que una persona pegó ahí:\n95 de ellas una clave de API de Google, 11 otra cadena con forma de secreto y una\nuna clave secreta de Stripe real. Esas son las líneas de un informe de Base44 que\nalguien puso ahí, y las únicas que alguien puede quitar.",[21,117,119],{"id":118},"por-qué-casi-toda-app-base44-saca-b","Por qué casi toda app Base44 saca B",[10,121,122],{},"Porque la nota está limitada por el peor hallazgo, y casi toda app Base44 tiene\nel mismo hallazgo medio.",[45,124,125,138],{},[48,126,127],{},[51,128,129,132,135],{},[54,130,131],{},"Nota",[54,133,134],{},"Base44 (5.442)",[54,136,137],{},"Lovable (18.563)",[61,139,140,151,164,175,186],{},[51,141,142,145,148],{},[66,143,144],{},"A",[66,146,147],{},"1.205 (22%)",[66,149,150],{},"15.972 (86%)",[51,152,153,156,161],{},[66,154,155],{},"B",[66,157,158],{},[17,159,160],{},"4.231 (78%)",[66,162,163],{},"370 (2%)",[51,165,166,169,172],{},[66,167,168],{},"C",[66,170,171],{},"4",[66,173,174],{},"1.814 (10%)",[51,176,177,180,183],{},[66,178,179],{},"D",[66,181,182],{},"2",[66,184,185],{},"402 (2%)",[51,187,188,191,194],{},[66,189,190],{},"F",[66,192,193],{},"0",[66,195,196],{},"5",[10,198,199],{},"Lee la forma, no la clasificación. El informe de Base44 es una barra alta en B y\ncasi nada por debajo: seis apps de 5.442 por debajo de B, y ni una sola F.\nLovable tiene la otra forma entera, 86% en A y alrededor de una de cada ocho en C\no peor. Las mismas nueve comprobaciones dieron una distribución plana en una\nplataforma y una partida en la otra, y ninguna de las dos imágenes es un veredicto\nsobre una app concreta, tampoco sobre la tuya.",[10,201,202],{},"Así que una B en una app Base44 está cerca del suelo de la plataforma, y la\nlectura útil de tu informe no es la letra. Es si la línea de claves y la línea de\nsecretos están vacías.",[21,204,206],{"id":205},"las-95-claves-que-sí-eran-tuyas","Las 95 claves que sí eran tuyas",[10,208,209],{},"Una clave en tu página publicada es el único hallazgo de un informe de Base44 que\nno puso nadie más.",[10,211,212,213,217],{},"95 de las 5.442 apps entregaron una clave de API de Google y 11 entregaron otra\ncosa que parecía un secreto. Una entregó una clave secreta de Stripe real, y otra\nuna restringida. Una clave de API de Google en una página suele ser inofensiva y\na veces es una factura, según si se restringió al crearla, y eso\n",[108,214,216],{"href":215},"\u002Fblog\u002Fgoogle-api-key-exposed-in-frontend","se comprueba y se arregla en cinco minutos",".\nUna clave secreta de Stripe en una página no entra en esa categoría en absoluto:\nlee clientes, mueve dinero y emite devoluciones, y hay que rotarla antes de que\nacabes de leer esto.",[10,219,220,221,225],{},"Si no tienes claro cuáles de tus claves deben ser públicas, esa pregunta tiene\nuna respuesta corta y la escribimos:\n",[108,222,224],{"href":223},"\u002Fblog\u002Fwhich-api-keys-are-safe-in-your-frontend","qué claves van en un navegador y cuáles nunca",".",[10,227,228,229,225],{},"Nuestro escaneo gratuito lee tu app Base44 en producción desde fuera y te dice\nqué claves y direcciones ve. Tarda unos 20 segundos y no necesita cuenta:\n",[108,230,232],{"href":231},"\u002Fsecurity-scanner","escanea tu app",[21,234,236],{"id":235},"lo-único-que-nadie-puede-comprobar-desde-fuera","Lo único que nadie puede comprobar desde fuera",[10,238,239],{},"Si un desconocido puede leer tus datos. Ni nosotros, ni ningún otro escáner, y el\nmotivo es el propio diseño de Base44.",[10,241,242],{},"En casi todos los builders tu app habla con su base de datos directamente desde\nel navegador del visitante. Eso significa que la base de datos tiene una\ndirección pública, que tu app la lleva encima y que cualquiera puede sacarla y\nhacerle preguntas. Si obtiene respuestas depende de un ajuste por tabla que el\ndueño puede no haber visto nunca. Es la mayor causa individual de datos filtrados\nen apps construidas así, y en Base44 ese camino no está disponible para ti,\nporque las peticiones pasan por Base44.",[10,244,245,246,248],{},"La medición lo dice sin rodeos. 1.466 de las 5.442 apps Base44 nombran un\nproyecto de Supabase en algún punto de su página. Nuestra comprobación de Row\nLevel Security consiguió una respuesta utilizable de ",[17,247,182],{}," de ellas.",[32,250],{"alt":251,"caption":252,"src":253},"Tres barras que se estrechan de izquierda a derecha en una misma escala: 5.442 apps Base44, 1.466 que nombran un proyecto de Supabase, y una barra de 2 dibujada como una línea fina con un anillo alrededor. Un contorno discontinuo continúa desde la línea fina hasta el ancho de la segunda barra, con un signo de interrogación y la cifra 1.464 debajo.","La tercera barra son dos apps. La parte discontinua son las 1.464 que no le dieron nada que leer a la comprobación, que es justo lo que parece desde la calle una base de datos sin dirección pública.","\u002Fblog\u002Fis-base44-safe\u002Fwhat-nobody-can-ask-1600x620.png",[10,255,256],{},"Compáralo con los builders donde la puerta da a la calle. En Lovable, 6.535 apps\nnombran un proyecto de Supabase, 3.553 le dieron a la comprobación una respuesta\nutilizable, y 2.017 de ellas entregaron filas a una petición sin inicio de\nsesión. En Bolt respondieron 35 de 267. En v0, ninguna de 17.",[10,258,259,260,263],{},"Dos apps no son una tasa, y no vamos a publicar ninguna. ",[17,261,262],{},"El resumen honesto es\nque tus datos de Base44 están detrás de una puerta a la que no llegamos, lo cual\nes mejor que una puerta abierta, y no es lo mismo que saber que está cerrada con\nllave."," Lo que lo decide está dentro: quién puede registrarse, qué ve una cuenta\nregistrada y si alguna pantalla se construyó dando por hecho que nadie miraría.",[21,265,267],{"id":266},"lo-que-significa-aquí-la-comprobación-de-dentro-es-la-que-cuenta","Lo que significa: aquí la comprobación de dentro es la que cuenta",[10,269,270],{},"Base44 tiene una, y en una app Base44 ve la mitad que nosotros no vemos.",[10,272,273],{},"La página de seguridad de Base44 dice que puedes lanzar un escaneo de seguridad\ndesde la pestaña Security de cada app y que comprueba dependencias de terceros,\npatrones de código inseguros, secretos expuestos, comprobaciones de inicio de\nsesión que faltan y reglas débiles de acceso a datos. Esas dos últimas son\nexactamente las preguntas a las que un escaneo desde fuera no llega en una app\nBase44. Leído el 6 de octubre de 2026.",[10,275,276],{},"Lo contrario también es cierto, y por eso las 95 están en este artículo. Un\nescáner de dentro lee tu proyecto; no tiene ningún motivo especial para pedir tu\npágina publicada y leer lo que salió en ella. Así que los dos responden a mitades\ndistintas, y quien, siendo dueño de una app Base44, solo lanza uno, está ciego de\nuna forma concreta:",[278,279,280,287],"ul",{},[281,282,283,286],"li",{},[17,284,285],{},"La pestaña Security de Base44"," lee el proyecto: tus dependencias, tu código,\ntus comprobaciones de inicio de sesión, tus reglas de acceso a datos.",[281,288,289,292],{},[17,290,291],{},"Un escaneo desde fuera"," lee lo que reciben tus visitantes: las claves de la\npágina, las direcciones a las que llama, las cabeceras que vuelven y si salió\nun mapa con ella.",[10,294,295,296,225],{},"Lanza el de dentro antes de publicar y el de fuera después. La documentación de\nBase44 describe ese escaneo con más detalle que su página de seguridad, y la\nrepasamos entera: ",[108,297,299],{"href":298},"\u002Fblog\u002Fbase44-security-scan","qué comprueba y por qué puede salir limpio mientras tu página\npublicada sigue llevando una clave",[21,301,303],{"id":302},"si-conectaste-tu-propio-proyecto-de-supabase","Si conectaste tu propio proyecto de Supabase",[10,305,306],{},"Entonces la puerta a la calle vuelve, y el ajuste por tabla es tuyo otra vez.",[10,308,309],{},"Base44 te deja conectar tu propio proyecto de Supabase en lugar de usar la base\nde datos que trae. Eso cambia lo más importante de este artículo: tu proyecto\nresponde a internet directamente, tu página lleva su dirección, y Row Level\nSecurity es ahora lo único entre un desconocido y una tabla. Está desactivada por\ndefecto en cualquier tabla creada ejecutando SQL.",[32,311],{"alt":312,"caption":313,"src":314},"Dos paneles. En el izquierdo, una flecha lleva de una app Base44 a un panel de plataforma Base44 con una base de datos dentro, y la ruta propia de un visitante hacia esa base de datos es una línea discontinua que se detiene en la pared del panel. En el derecho, la misma flecha sale a una base de datos que está sola, y la ruta del visitante llega hasta ella a través de una puerta.","A la izquierda, una app Base44 sobre la base de datos propia de Base44. A la derecha, la misma app con tu proyecto de Supabase conectado. La puerta de la derecha es Row Level Security, y es la que configuras tú.","\u002Fblog\u002Fis-base44-safe\u002Fyour-own-supabase-1600x620.png",[10,316,317,318,322,323,327],{},"Este es el único camino por el que el clásico problema de la base de datos\nabierta llega a una app Base44, y se puede comprobar en los dos sentidos: nuestro\nescaneo puede hacerle a tu proyecto de Supabase la misma pregunta que le hace en\ncualquier otro builder, y\n",[108,319,321],{"href":320},"\u002Fblog\u002Fcan-anyone-read-your-supabase-database","la versión de cinco minutos de la comprobación","\nes una página de tu propio panel. Si tienes tablas con cualquier cosa sobre\npersonas,\n",[108,324,326],{"href":325},"\u002Fblog\u002Fenable-rls-on-every-supabase-table","activarla en todas las tablas"," es lo\nprimero que toca hoy.",[10,329,330,331,334,335,338,339,225],{},"Un proyecto de Supabase que es tuyo es también una base de datos de cuya copia\nrespondes tú. ",[17,332,333],{},"Care"," guarda una copia de tu base de datos de ",[17,336,337],{},"Supabase"," con\nuna periodicidad fija y te da una restauración en un clic, y si conectas una\ncredencial de Storage tus archivos subidos vienen también. Cubre Supabase, así\nque es para esta rama del artículo y no para una app Base44 sobre la base de\ndatos propia de Base44: ",[108,340,342],{"href":341},"\u002Fsupabase-backups","cómo funcionan las copias",[21,344,346],{"id":345},"la-comprobación-de-cinco-minutos-en-tu-propia-app-base44","La comprobación de cinco minutos en tu propia app Base44",[10,348,349],{},"Cuatro cosas, en el orden en que merecen la pena.",[10,351,352,355,356,225],{},[17,353,354],{},"Abre tu app publicada y mira qué salió con ella."," Pulsa F12, abre la pestaña\nNetwork, recarga y lee las peticiones. Buscas una clave en una URL o en una\nrespuesta, y una dirección que no reconozcas. Nuestro escaneo hace esto desde\nfuera y lista lo que encontró, que es más rápido que leerlo tú:\n",[108,357,232],{"href":231},[10,359,360,363,364,368],{},[17,361,362],{},"Si encuentras una clave, identifícala antes de asustarte."," Una clave de API de\nGoogle quiere que la restrinjas, no que la rotes. Cualquier cosa que empiece por\n",[365,366,367],"code",{},"sk_"," quiere que la rotes ya.",[10,370,371,374],{},[17,372,373],{},"Abre la pestaña Security de Base44 y lanza también el escaneo de ahí."," Es el\núnico de los dos que puede ver tus comprobaciones de inicio de sesión y tus\nreglas de acceso a datos.",[10,376,377,380],{},[17,378,379],{},"Y luego regístrate en tu propia app como lo haría un desconocido."," Crea una\nsegunda cuenta, no le des nada y mira hasta dónde llega. Esa es la pregunta que\nel escaneo desde fuera no puede hacer, y un registro la responde.",[21,382,384],{"id":383},"tu-app-cambia-cada-vez-que-publicas","Tu app cambia cada vez que publicas",[10,386,387],{},"Un escaneo es la lectura de un momento, y el momento termina la próxima vez que\npulsas publicar.",[10,389,390],{},"Eso no es un problema de Base44, es cómo funcionan todos estos builders: un\nprompt que añade una función puede añadir una clave, una página nueva o una\ndirección que responde. Las 95 apps en las que encontramos una clave no las\nconstruyó gente que quisiera una clave en la página. Se construyeron un prompt\ndetrás de otro.",[278,392,393,399],{},[281,394,395,398],{},[17,396,397],{},"Monitor"," vuelve a pasar las nueve comprobaciones con una periodicidad fija y\nte avisa cuando una respuesta cambia.",[281,400,401,403,404,406],{},[17,402,333],{}," añade una copia de tu base de datos de ",[17,405,337],{},", guardada con una\nperiodicidad fija, con restauración en un clic.",[10,408,409,410,225],{},"Los dos leen las mismas nueve comprobaciones sobre las que está construido este\nartículo: ",[108,411,413],{"href":412},"\u002Fpricing","mira qué cubre cada uno",[21,415,417],{"id":416},"qué-hacer-esta-semana","Qué hacer esta semana",[419,420,421],"key-takeaways",{},[278,422,423,426,432,435,438],{},[281,424,425],{},"Lee la línea de claves y la línea de secretos de tu informe, no la letra. Una B en una app Base44 es el suelo de la plataforma, y 4.231 de las 5.442 apps que calificamos están sentadas en él.",[281,427,428,429,431],{},"Si hay una clave en tu página publicada, identifícala primero. Una clave de API de Google se restringe; cualquier cosa que empiece por ",[365,430,367],{}," se rota hoy.",[281,433,434],{},"Lanza también el propio escaneo de Base44 desde la pestaña Security de tu app. En una app Base44 es el único de los dos que puede ver tus comprobaciones de inicio de sesión y tus reglas de acceso a datos.",[281,436,437],{},"Regístrate en tu propia app como un desconocido y mira hasta dónde llega la cuenta nueva. Eso no lo puede responder ningún escaneo desde fuera, en ningún builder.",[281,439,440],{},"Si conectaste tu propio proyecto de Supabase, activa Row Level Security en todas las tablas y comprueba después que de verdad funciona, porque esa es la única vía por la que un desconocido llega directo a tus datos.",[10,442,443,444,448,449,453,454,225],{},"Si prefieres recorrerlo como una lista, la\n",[108,445,447],{"href":446},"\u002Fchecklist","checklist de seguridad de 10 minutos"," cubre esto y las demás cosas\nque conviene apagar en una app recién lanzada. La explicación en lenguaje llano\npara esta plataforma es\n",[108,450,452],{"href":451},"\u002Fis-your-base44-app-safe","¿es segura tu app Base44?",", y la comparativa entre\nbuilders está ",[108,455,457],{"href":456},"\u002Fblog\u002Fsafest-ai-app-builder","en su propio artículo",{"title":459,"searchDepth":460,"depth":460,"links":461},"",3,[462,464,465,466,467,468,469,470,471,472],{"id":23,"depth":463,"text":24},2,{"id":39,"depth":463,"text":40},{"id":118,"depth":463,"text":119},{"id":205,"depth":463,"text":206},{"id":235,"depth":463,"text":236},{"id":266,"depth":463,"text":267},{"id":302,"depth":463,"text":303},{"id":345,"depth":463,"text":346},{"id":383,"depth":463,"text":384},{"id":416,"depth":463,"text":417},"Fundamentos de seguridad","\u002Fblog\u002Fis-base44-safe\u002Fcover-1200x630.png","Una tarjeta de app Base44 delante de un panel de plataforma cerrado con una base de datos dentro, y visitantes que llegan a la app desde la derecha.","¿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ó.",false,"md",[480,483,486,489,492,495],{"q":481,"a":482},"¿Base44 es seguro para un producto real?","En lo que podemos leer desde fuera, las apps Base44 son tranquilas. De 5.442 que calificamos, seis sacaron peor que B y ninguna sacó F. Lo que nos impide responder bien a la pregunta es que una app Base44 guarda sus datos detrás de Base44 y no en una dirección pública, así que la comprobación que condenó a miles de apps en otros builders aquí no puede ejecutarse. Eso es de verdad mejor que una base de datos pública abierta, y no es lo mismo que un certificado de buena salud. La parte sobre la que puedes actuar hoy son tus propias claves: 95 de esas 5.442 apps entregaron una clave de API de Google en la página.",{"q":484,"a":485},"¿Por qué mi app Base44 saca una B?","Casi con seguridad por dos cabeceras de respuesta que Base44 pone en cada app que aloja, y no por nada que hayas construido tú. A 5.438 de las 5.442 apps que calificamos les faltaban cabeceras de seguridad, y 5.417 le decían a cualquier web del mundo que podía llamar a su API. Las dos las decide el alojamiento. La línea del source map en tu informe también es la plataforma y no tú: el único mapa que responde en una app Base44 pertenece al propio script de insignia de Base44.",{"q":487,"a":488},"¿Puede la gente ver el código de mi app Base44?","Pueden leer la mitad que vive en el navegador de cualquier app, porque un navegador no puede dibujar una página que no ha recibido. Tus archivos originales con sus comentarios y nombres son otra cosa, y en las apps Base44 que volvimos a revisar en septiembre de 2026 no estaban publicados. 3.229 de 5.442 apps salieron marcadas por un source map, y en todas las que abrimos había código del propio script de insignia de Base44, no el tuyo. Eso lo escribimos aparte.",{"q":490,"a":491},"¿Están seguros mis datos en una app Base44?","Nadie fuera de tu app puede decírtelo, nosotros incluidos, y eso es un hecho sobre cómo está construido Base44, no un hueco en nuestro escaneo. Tu app le pide datos a Base44 y Base44 se los pide a la base de datos, así que no hay una dirección que un desconocido pueda teclear. Las preguntas que deciden la respuesta están por tanto todas dentro: quién puede registrarse, qué ve una cuenta registrada y si alguna pantalla se construyó dando por hecho que nadie miraría. El propio escaneo de seguridad de Base44 lee esa mitad. Un escaneo desde fuera lee la otra.",{"q":493,"a":494},"¿El propio escaneo de seguridad de Base44 detecta esto?","Lee la mitad que nosotros no podemos. La página de seguridad de Base44 dice que puedes lanzar un escaneo desde la pestaña Security de cada app y que comprueba dependencias de terceros, patrones de código inseguros, secretos expuestos, comprobaciones de inicio de sesión que faltan y reglas débiles de acceso a datos. Esas dos últimas son exactamente lo que un escaneo desde fuera no puede ver, por estructura, en una app Base44. Lo que él no tiene motivo para mirar es lo que tu página publicada le entrega a un visitante, que es donde encontramos las 95 claves de API de Google. Lanza los dos y léelos como dos mitades de una respuesta.",{"q":496,"a":497},"¿Base44 es más seguro que Lovable?","Sus informes parecen opuestos y la diferencia es real. 15.972 de 18.563 apps Lovable sacaron A, y alrededor de una de cada ocho sacó C o peor, porque una app Lovable habla con su base de datos directamente desde el navegador y esa base de datos a menudo queda legible. Base44 casi no tiene cola grave: seis apps de 5.442 por debajo de B. Lo que entregas a cambio es la posibilidad de comprobarlo tú mismo desde fuera. Comparamos los cinco builders en un artículo aparte en lugar de repetir la tabla aquí.","\u002Fblog\u002Fis-base44-safe\u002Fcard-800x500.png",[500,501,502,503,504,505,506,507],"es seguro base44","base44 seguridad","seguridad de apps base44","son seguras las apps base44","base44 seguridad de datos","base44 supabase seguridad","is base44 safe","base44 review",{},true,"\u002Fblog\u002Fis-base44-safe","2026-10-06",{"title":5,"description":476},"blog\u002Fis-base44-safe",[515,516,517],"¿Es seguro Base44? 4.231 de las 5.442 apps Base44 que calificamos sacaron B, y cuatro hallazgos que pertenecen a Base44 y no al dueño de la app explican casi todo.","Lo que el dueño sí hizo mal era raro: 103 de esas apps publicaron una clave o un secreto en la página, 95 de ellas una clave de API de Google y una una clave secreta de Stripe real.","La pregunta que casi todo el mundo quiere decir con \"¿es seguro?\" no se puede responder desde fuera de una app Base44. 1.466 nombran un proyecto de Supabase y solo 2 nos dejaron preguntar si un desconocido puede leerlo.","9PMIa6EOIlTeiNnlkymmc28gVoPRVfH37XOx3uiekCQ",[520,526,531,537,543,549,550,556,562,568,574,580,586,592,599,605,611,616,622,628,634,640,646,652,658,664,669,675,681,687,693,699,704,709,715,721,727,733,739,745,751,757,763,769,775,781,787,793,799,805,811,817,822,828,833,838,844,850,856,861,867],{"path":521,"title":522,"description":523,"published":524,"category":473,"image":525,"draft":477},"\u002Fblog\u002Fstorage-upload-violates-row-level-security","\"Row-level security policy for table objects\" al subir","\"New row violates row-level security policy for table objects\" significa que tu subida no tiene regla insert. Hacer público el bucket no añade ninguna.","2026-10-11","\u002Fblog\u002Fstorage-upload-violates-row-level-security\u002Fcard-800x500.png",{"path":298,"title":527,"description":528,"published":529,"category":473,"image":530,"draft":477},"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":532,"title":533,"description":534,"published":535,"category":473,"image":536,"draft":477},"\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":538,"title":539,"description":540,"published":541,"category":473,"image":542,"draft":477},"\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":544,"title":545,"description":546,"published":547,"category":473,"image":548,"draft":477},"\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":510,"title":5,"description":476,"published":511,"category":473,"image":498,"draft":477},{"path":551,"title":552,"description":553,"published":554,"category":473,"image":555,"draft":477},"\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":557,"title":558,"description":559,"published":560,"category":473,"image":561,"draft":477},"\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":563,"title":564,"description":565,"published":566,"category":473,"image":567,"draft":477},"\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":569,"title":570,"description":571,"published":572,"category":473,"image":573,"draft":477},"\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":575,"title":576,"description":577,"published":578,"category":473,"image":579,"draft":477},"\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":581,"title":582,"description":583,"published":584,"category":473,"image":585,"draft":477},"\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":587,"title":588,"description":589,"published":590,"category":473,"image":591,"draft":477},"\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":593,"title":594,"description":595,"published":596,"category":597,"image":598,"draft":477},"\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":600,"title":601,"description":602,"published":603,"category":597,"image":604,"draft":477},"\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":606,"title":607,"description":608,"published":609,"category":597,"image":610,"draft":477},"\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":612,"title":613,"description":614,"published":609,"category":473,"image":615,"draft":477},"\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":617,"title":618,"description":619,"published":620,"category":473,"image":621,"draft":477},"\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":623,"title":624,"description":625,"published":626,"category":473,"image":627,"draft":477},"\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":629,"title":630,"description":631,"published":632,"category":597,"image":633,"draft":477},"\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":635,"title":636,"description":637,"published":638,"category":473,"image":639,"draft":477},"\u002Fblog\u002Fdomain-and-certificate-expiry","Dominio caducado, web caída: qué pasa a partir de ahora","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.","2026-09-22","\u002Fblog\u002Fdomain-and-certificate-expiry\u002Fcard-800x500.png",{"path":641,"title":642,"description":643,"published":644,"category":473,"image":645,"draft":477},"\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":647,"title":648,"description":649,"published":650,"category":473,"image":651,"draft":477},"\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":653,"title":654,"description":655,"published":656,"category":473,"image":657,"draft":477},"\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":659,"title":660,"description":661,"published":662,"category":473,"image":663,"draft":477},"\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":110,"title":665,"description":666,"published":667,"category":473,"image":668,"draft":477},"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":670,"title":671,"description":672,"published":673,"category":473,"image":674,"draft":477},"\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":676,"title":677,"description":678,"published":679,"category":473,"image":680,"draft":477},"\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":682,"title":683,"description":684,"published":685,"category":597,"image":686,"draft":477},"\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":688,"title":689,"description":690,"published":691,"category":597,"image":692,"draft":477},"\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":694,"title":695,"description":696,"published":697,"category":597,"image":698,"draft":477},"\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":456,"title":700,"description":701,"published":702,"category":473,"image":703,"draft":477},"¿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":325,"title":705,"description":706,"published":707,"category":473,"image":708,"draft":477},"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":710,"title":711,"description":712,"published":713,"category":473,"image":714,"draft":477},"\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":716,"title":717,"description":718,"published":719,"category":473,"image":720,"draft":477},"\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":722,"title":723,"description":724,"published":725,"category":473,"image":726,"draft":477},"\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":728,"title":729,"description":730,"published":731,"category":473,"image":732,"draft":477},"\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":734,"title":735,"description":736,"published":737,"category":473,"image":738,"draft":477},"\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":740,"title":741,"description":742,"published":743,"category":473,"image":744,"draft":477},"\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":746,"title":747,"description":748,"published":749,"category":473,"image":750,"draft":477},"\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":752,"title":753,"description":754,"published":755,"category":473,"image":756,"draft":477},"\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":758,"title":759,"description":760,"published":761,"category":597,"image":762,"draft":477},"\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":764,"title":765,"description":766,"published":767,"category":473,"image":768,"draft":477},"\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":770,"title":771,"description":772,"published":773,"category":597,"image":774,"draft":477},"\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":776,"title":777,"description":778,"published":779,"category":473,"image":780,"draft":477},"\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":782,"title":783,"description":784,"published":785,"category":473,"image":786,"draft":477},"\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":788,"title":789,"description":790,"published":791,"category":473,"image":792,"draft":477},"\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":794,"title":795,"description":796,"published":797,"category":473,"image":798,"draft":477},"\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":800,"title":801,"description":802,"published":803,"category":597,"image":804,"draft":477},"\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":806,"title":807,"description":808,"published":809,"category":597,"image":810,"draft":477},"\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":812,"title":813,"description":814,"published":815,"category":473,"image":816,"draft":477},"\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":215,"title":818,"description":819,"published":820,"category":473,"image":821,"draft":477},"¿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":823,"title":824,"description":825,"published":826,"category":597,"image":827,"draft":477},"\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":320,"title":829,"description":830,"published":831,"category":473,"image":832,"draft":477},"¿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":834,"title":835,"description":836,"published":831,"category":473,"image":837,"draft":477},"\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":839,"title":840,"description":841,"published":842,"category":473,"image":843,"draft":477},"\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":845,"title":846,"description":847,"published":848,"category":597,"image":849,"draft":477},"\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":851,"title":852,"description":853,"published":854,"category":473,"image":855,"draft":477},"\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":857,"title":858,"description":859,"published":854,"category":597,"image":860,"draft":477},"\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":862,"title":863,"description":864,"published":865,"category":597,"image":866,"draft":477},"\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":223,"title":868,"description":869,"published":865,"category":473,"image":870,"draft":477},"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",1791705962958]