[{"data":1,"prerenderedAt":1199},["ShallowReactive",2],{"blog-es-vibe-coding-security-scanners-compared":3,"blog-index-es":956},{"id":4,"title":5,"body":6,"category":909,"cover":910,"coverAlt":911,"description":912,"draft":913,"extension":914,"faq":915,"image":934,"keywords":935,"meta":944,"navigation":945,"ogTitle":946,"path":947,"published":948,"seo":949,"stem":950,"tldr":951,"updated":948,"__hash__":955},"blog_es\u002Fblog\u002Fvibe-coding-security-scanners-compared.md","Escáneres de seguridad vibe coding comparados, el nuestro incluido",{"type":7,"value":8,"toc":893},"minimark",[9,13,16,24,37,42,45,51,63,69,77,83,87,90,276,279,282,286,289,420,423,427,430,433,444,451,466,471,474,477,480,483,491,495,498,501,509,515,519,522,706,714,717,728,732,735,756,759,763,766,781,784,804,807,811,814,851,855,878],[10,11,12],"p",{},"Escribiste \"mejor escáner de seguridad para vibe coding\" en un buscador, y la\nprimera comparativa que salió la había escrito uno de los escáneres. El aviso\nestaba ahí, en una línea debajo de la tabla.",[10,14,15],{},"Reeve es una de las diez herramientas de abajo, así que esta página tiene el\nmismo problema. Reeve es un escáner de seguridad gratuito que lee una URL en\ndirecto en unos veinte segundos sin cuenta, y una suscripción de pago que sigue\nvigilando la aplicación después y guarda una copia verificada de su base de\ndatos. Lo que sí podemos hacer con ese conflicto es enseñar el trabajo. Cada fila\nse leyó en la página del propio vendedor el 7 de septiembre de 2026, cada precio\nestá impreso incluido el nuestro, aquí no hay nada patrocinado, y cerca del final\nhay una sección que nombra los tres trabajos de esta página que Reeve no hace en\nabsoluto.",[10,17,18,19,23],{},"Esto es lo que las comparativas de los fabricantes se dejan fuera. ",[20,21,22],"strong",{},"La mayoría\nde estas herramientas lee la misma superficie."," Cargan tu aplicación en\ndirecto, se bajan el JavaScript que le manda al navegador, leen las cabeceras que\nvinieron con él, le hacen a tu base de datos una pregunta que podría hacer\ncualquier desconocido, y anotan qué respondió. El escaneo es la parte que tienen\nen común. Tres preguntas las separan:",[25,26,27,31,34],"ol",{},[28,29,30],"li",{},"¿Distingue una clave que pertenece a tu aplicación de una que no?",[28,32,33],{},"¿Avisa cuando una comprobación no obtuvo respuesta?",[28,35,36],{},"¿Pasa algo el día en que tus datos ya no están?",[38,39,41],"h2",{"id":40},"cuál-es-el-mejor-escáner-de-seguridad-para-vibe-coding","¿Cuál es el mejor escáner de seguridad para vibe coding?",[10,43,44],{},"El que pueda leer la superficie donde está tu problema. Esa pregunta ordena la\nlista más rápido que cualquier lista de funciones, y parte diez herramientas en\ntres grupos.",[10,46,47,50],{},[20,48,49],{},"Herramientas a las que das una URL."," SafeToShip, LaunchGuard, Vibe App\nScanner, VibeEval, SupaExplorer y Reeve. Pegas una dirección, cargan tu\naplicación como lo haría un visitante, y en un minuto o dos vuelve un informe.\nNada que instalar, ninguna cuenta que conectar, ningún acceso a nada tuyo.",[10,52,53,56,57,62],{},[20,54,55],{},"Herramientas a las que das tu código."," CheckVibe lee una URL en directo y\ntambién se conecta a un repositorio de GitHub si le dejas. Leer el código fuente\nresponde preguntas que un escaneo de URL no puede hacer, y trae su propio punto\nciego, y por eso\n",[58,59,61],"a",{"href":60},"\u002Fblog\u002Fvibe-coding-security-scanner","qué se le escapa a un escaneo de URL"," vale\nla pena antes de pagar por cualquiera de los dos.",[10,64,65,68],{},[20,66,67],{},"Herramientas a las que das tu cuenta de Supabase."," El propio Security Advisor\nde Supabase vive en tu panel y lee la configuración del proyecto. Defencecore\npide acceso de solo lectura a los registros de un proyecto y luego los vigila.\nSupabomb es una herramienta de línea de comandos de código abierto escrita para\ngente que se dedica a esto. Las tres alcanzan desde dentro de la cuenta cosas que\nno puede ver nada que esté fuera de tu aplicación.",[10,70,71,72,76],{},"Si estás en Supabase y nunca has abierto el Security Advisor, abre ese antes de\npagarle a nadie de esta página. Es gratis, funciona solo, y le escribe un correo\nal dueño del proyecto cuando aparece una tabla con Row Level Security apagada.\nTampoco compite con nada de aquí: lee tu configuración, mientras que un escaneo\nlee qué le está haciendo tu configuración a los desconocidos, y\n",[58,73,75],{"href":74},"\u002Fblog\u002Fsupabase-rls-on-but-table-still-public","esas dos cosas se separan"," más a\nmenudo de lo que nadie espera.",[78,79],"diagram",{"alt":80,"caption":81,"src":82},"Una rejilla de tres por tres. Cada fila empieza con lo que se le entrega a una herramienta: un globo terráqueo, un par de corchetes angulares, una llave. Cada columna es una superficie que podría leer: una ventana de aplicación, código fuente, una base de datos junto a un cubo de almacenamiento. En cada fila hay una celda encendida y las otras dos son contornos discontinuos, así que las encendidas caen en la diagonal.","Qué se le entrega a cada tipo de herramienta y qué le permite leer. Una herramienta de esta página compra dos de estas filas. Ninguna compra las tres.","\u002Fblog\u002Fvibe-coding-security-scanners-compared\u002Fwhat-you-hand-it-1600x700.png",[38,84,86],{"id":85},"qué-lee-de-verdad-cada-escáner","¿Qué lee de verdad cada escáner?",[10,88,89],{},"Siete de los diez funcionan con nada más que una URL. Los otros tres quieren algo\npara lo que hay que iniciar sesión, y esa es la columna que se lee antes que\ncualquier lista de funciones. Las dos de la derecha son las que deciden si puedes\nprobar una herramienta esta mañana: cinco escanean sin ninguna cuenta, y cuatro\nde esos cinco te enseñan el informe entero.",[91,92,93,115],"table",{},[94,95,96],"thead",{},[97,98,99,103,106,109,112],"tr",{},[100,101,102],"th",{},"Herramienta",[100,104,105],{},"Qué lee",[100,107,108],{},"Qué le entregas",[100,110,111],{},"Escanea sin registrarte",[100,113,114],{},"Hallazgos completos gratis",[116,117,118,136,153,170,186,200,215,229,246,262],"tbody",{},[97,119,120,124,127,130,133],{},[121,122,123],"td",{},"Supabase Security Advisor",[121,125,126],{},"La configuración de tu propio proyecto",[121,128,129],{},"Tu acceso a Supabase",[121,131,132],{},"Es tu propia cuenta",[121,134,135],{},"Sí",[97,137,138,141,144,147,150],{},[121,139,140],{},"CheckVibe",[121,142,143],{},"Tu aplicación en directo, y tu repositorio si lo conectas",[121,145,146],{},"Una URL, y GitHub si quieres",[121,148,149],{},"No, su botón es \u002Fsignup",[121,151,152],{},"No, lo abre un plan de pago",[97,154,155,158,161,164,167],{},[121,156,157],{},"Defencecore",[121,159,160],{},"Tus registros de Supabase",[121,162,163],{},"Acceso de solo lectura a un proyecto",[121,165,166],{},"No, quiere una prueba",[121,168,169],{},"No",[97,171,172,175,178,181,183],{},[121,173,174],{},"LaunchGuard",[121,176,177],{},"Tu aplicación en directo",[121,179,180],{},"Una URL",[121,182,135],{},[121,184,185],{},"Sí, de lo que escanea",[97,187,188,191,193,195,197],{},[121,189,190],{},"Reeve",[121,192,177],{},[121,194,180],{},[121,196,135],{},[121,198,199],{},"No, primero un correo",[97,201,202,205,207,209,212],{},[121,203,204],{},"SafeToShip",[121,206,177],{},[121,208,180],{},[121,210,211],{},"Sí, \"no account needed\"",[121,213,214],{},"No, $9 o un plan",[97,216,217,220,223,225,227],{},[121,218,219],{},"SupaExplorer",[121,221,222],{},"Tu aplicación en directo, o un proyecto que conectes",[121,224,180],{},[121,226,135],{},[121,228,135],{},[97,230,231,234,237,240,243],{},[121,232,233],{},"Supabomb",[121,235,236],{},"Tu proyecto de Supabase, desde la línea de comandos",[121,238,239],{},"Credenciales que le des tú",[121,241,242],{},"Lo ejecutas tú",[121,244,245],{},"Sí, es de código abierto",[97,247,248,251,254,256,259],{},[121,249,250],{},"Vibe App Scanner",[121,252,253],{},"Tu aplicación en directo, con sesión en el plan más alto",[121,255,180],{},[121,257,258],{},"Su página no lo dice",[121,260,261],{},"No, un escaneo, en parte",[97,263,264,267,270,272,274],{},[121,265,266],{},"VibeEval",[121,268,269],{},"Tu aplicación en directo, incluso páginas tras un login",[121,271,180],{},[121,273,166],{},[121,275,169],{},[10,277,278],{},"Cada fila se leyó en las páginas de la propia herramienta el 7 de septiembre de 2026. Esta es una categoría joven y las páginas se mueven, así que trata la fila\ncomo más vieja que el sitio del que salió.",[10,280,281],{},"En esa tabla es donde paran casi todas las comparativas, y es la parte que menos\nsepara a estas herramientas.",[38,283,285],{"id":284},"las-tres-preguntas-herramienta-por-herramienta","Las tres preguntas, herramienta por herramienta",[10,287,288],{},"Reeve es la única de las diez que responde que sí a las tres.",[91,290,291,306],{},[94,292,293],{},[97,294,295,297,300,303],{},[100,296,102],{},[100,298,299],{},"Distingue clave publicable de secreta",[100,301,302],{},"Avisa cuando una comprobación no respondió",[100,304,305],{},"Puede devolver tus datos",[116,307,308,321,331,342,352,362,372,383,394,404],{},[97,309,310,312,315,318],{},[121,311,190],{},[121,313,314],{},"Sí, descifra el rol de la clave",[121,316,317],{},"Sí, imprime \"No se pudo comprobar\"",[121,319,320],{},"Sí, con suscripción",[97,322,323,325,327,329],{},[121,324,140],{},[121,326,258],{},[121,328,258],{},[121,330,169],{},[97,332,333,335,338,340],{},[121,334,157],{},[121,336,337],{},"No es lo suyo",[121,339,258],{},[121,341,169],{},[97,343,344,346,348,350],{},[121,345,174],{},[121,347,258],{},[121,349,258],{},[121,351,169],{},[97,353,354,356,358,360],{},[121,355,204],{},[121,357,258],{},[121,359,258],{},[121,361,169],{},[97,363,364,366,368,370],{},[121,365,219],{},[121,367,258],{},[121,369,258],{},[121,371,169],{},[97,373,374,376,378,381],{},[121,375,123],{},[121,377,337],{},[121,379,380],{},"No aplica, está dentro",[121,382,169],{},[97,384,385,387,390,392],{},[121,386,233],{},[121,388,389],{},"Tendrías que leer el código",[121,391,389],{},[121,393,169],{},[97,395,396,398,400,402],{},[121,397,250],{},[121,399,258],{},[121,401,258],{},[121,403,169],{},[97,405,406,408,416,418],{},[121,407,266],{},[121,409,410,411,415],{},"Puso una clave ",[412,413,414],"code",{},"pk_live_"," como CRIT",[121,417,258],{},[121,419,169],{},[10,421,422],{},"\"Su página no lo dice\" quiere decir exactamente eso. Podemos leer lo que estas\nherramientas publican sobre sí mismas; el informe que recibirías tú no lo podemos\nver. Las tres secciones de abajo explican cada columna y te dan una manera de\ncomprobarlo en tu propia aplicación, escaneándola con dos de estas herramientas y\nleyendo los dos informes en paralelo.",[38,424,426],{"id":425},"distingue-tus-claves-seguras-de-las-peligrosas","¿Distingue tus claves seguras de las peligrosas?",[10,428,429],{},"Reeve sí, descifrando la clave y leyendo el rol que lleva escrito dentro. Esa\núnica capacidad es la diferencia entre un informe con el que puedes hacer algo y\nuna lista de cuarenta cosas por las que aprendes a pasar de largo.",[10,431,432],{},"Empieza por qué los recuentos se separan tanto. Un número de comprobaciones es\nuna cifra de marketing y no una medida: CheckVibe anuncia más de cien, Reeve\nejecuta nueve y publica con qué frecuencia salta cada una de las nueve en 30.998\naplicaciones. Una lista más larga sobre la misma aplicación es una lista más\nlarga. La causa mayor es que algunos escáneres tratan como problema cualquier\nclave que encuentran en tu JavaScript, y algunas de esas claves deben estar ahí.",[10,434,435,436,438,439,443],{},"Tu clave publicable de Supabase pertenece a tu frontend. Una clave de Stripe que\nempieza por ",[412,437,414],{}," también. Las dos viajan a cada visitante por diseño,\nporque la petición que identifican se hace desde el navegador del visitante, y\nninguna concede nada por sí sola.\n",[58,440,442],{"href":441},"\u002Fblog\u002Fwhich-api-keys-are-safe-in-your-frontend","Qué claves son seguras en tu frontend","\nes esa distinción entera.",[10,445,446,447,450],{},"El 7 de septiembre de 2026, la portada de VibeEval listaba \"Stripe pk_live_ found\nin ",[412,448,449],{},"\u002Fassets\u002Fapp.js","\" entre cinco hallazgos de ejemplo, marcado CRIT. Esa es una\nclave publicable, en el sitio exacto donde Stripe la publica. No podemos ver los\ninformes que estas herramientas mandan a sus clientes reales, así que léelo como\nuna página de marketing y no como un veredicto sobre el producto. Es un ejemplo\nlimpio de lo que hay que comprobar, y el daño no es esa línea equivocada. Un\nescáner que te da un hallazgo crítico por haber hecho algo bien te enseña a\nencogerte de hombros con el siguiente, y el siguiente es el hallazgo de verdad.",[10,452,453,454,457,458,461,462,465],{},"Una clave antigua de Supabase es un JWT, y su sección central dice\n",[412,455,456],{},"\"role\": \"anon\""," o ",[412,459,460],{},"\"role\": \"service_role\""," en texto legible. Reeve lee esa\npalabra. Una clave publicable en tu bundle vuelve bajo un encabezado que dice que\nesto lo hiciste bien y no te cuesta nada, y una clave ",[412,463,464],{},"service_role"," en ese mismo\nbundle es lo peor que el escáner sabe encontrar. Las dos se parecen muchísimo en\nel panel de Supabase, una al lado de la otra, y así es como se copia la que no\nera.",[78,467],{"alt":468,"caption":469,"src":470},"Dos paneles de informe para una misma aplicación. El de la izquierda tiene ocho filas, todas con una cruz roja, incluida una fila etiquetada pk_live_. El de la derecha tiene cuatro filas: pk_live_ junto a una marca verde, una cruz roja, una cruz ámbar, y una cuarta fila cuya marca es una casilla discontinua vacía.","Una aplicación, dos informes. La fila que importa es la clave publicable, y la última fila de la derecha es una comprobación sin respuesta, dibujada como ninguna respuesta.","\u002Fblog\u002Fvibe-coding-security-scanners-compared\u002Fsame-app-two-reports-1600x760.png",[38,472,33],{"id":473},"avisa-cuando-una-comprobación-no-obtuvo-respuesta",[10,475,476],{},"Reeve sí, con esas palabras. Una comprobación termina de tres maneras y solo una\nes aprobado: encuentra algo, recibe un no claro, o no recibe nada en absoluto\nporque la petición agotó su tiempo, el servidor la rechazó, o la página nunca\nterminó de cargar. Ese tercer final es la casilla vacía a la derecha de la imagen\nde arriba. Se imprime como \"No se pudo comprobar\" y deja tu nota en paz.",[10,478,479],{},"Esto es lo más silencioso de la página y lo que decide si un informe vale algo,\nporque una sonda que no obtuvo respuesta se parece exactamente a una sonda que\nvolvió limpia en cuanto alguien la redondea hacia una marca de aprobado. Actuarías\nsegún esa marca. Detrás no hay nada.",[10,481,482],{},"Fuimos a buscar la misma promesa en los otros nueve sitios el 7 de septiembre de\n2026 y no la encontramos en ninguno. Eso no prueba que ninguno redondee hacia\narriba. Es una afirmación que ninguno pone por escrito, y es la que querríamos\npor escrito antes de creernos un informe verde sobre una aplicación que nos\nimporta.",[10,484,485,486,490],{},"La misma regla gobierna las cifras que Reeve publica sobre todos los demás. Entre\nel 12 y el 14 de agosto de 2026 pasamos las nueve comprobaciones sobre\n",[58,487,489],{"href":488},"\u002Fresearch\u002Fvibe-coded-app-security-2026","30.998 aplicaciones vibe-coded en directo","\nconstruidas con Lovable, Bolt, v0, Cursor, Replit, Windsurf y Base44, publicamos\ncada agregado bajo CC BY 4.0 para que cualquiera lo reutilice, y anotamos con qué\nfrecuencia saltó cada comprobación, a qué proporción de aplicaciones no llegó, y\ncómo se contaron esas. Una comprobación sin respuesta va en su propia columna y\nno en el montón limpio, así que nada de esa página está inflado por contar el\nsilencio como seguridad. La portada de LaunchGuard publica 96 aplicaciones\nprobadas y 2,37 millones de registros expuestos. Ninguno de los otros ocho sitios\nque leímos publicaba cifra alguna.",[38,492,494],{"id":493},"qué-pasa-el-día-en-que-tus-datos-ya-no-están","¿Qué pasa el día en que tus datos ya no están?",[10,496,497],{},"Nada, en nueve de los diez. Un escáner encuentra la puerta abierta. No puede\ndecirte quién ya pasó por ella, y no puede devolver una tabla que alguien vació\nel martes.",[10,499,500],{},"Reeve Care es el décimo, y cerrar ese hueco es la razón de que exista esta\nempresa. Toma copias de tu base de datos de Supabase con un horario, abre cada\ncopia y la cuenta contra lo que entró antes de que la copia cuente como respaldo,\nlas guarda fuera de tu cuenta de Supabase para que un proyecto suspendido o un\nacceso que no puedes recuperar las deje donde están, y sustituye tus datos desde\nuna de ellas cuando lo pides. Antes de reemplazar nada, se toma primero una copia\ndel estado actual.",[10,502,503,504,508],{},"Tus archivos subidos viajan con las filas en cuanto conectas una credencial de\nStorage, que es una segunda clave que se pide aparte y la única que Reeve guarda\ncapaz de escribir, porque Supabase no emite ninguna clave de solo lectura para\narchivos. ",[58,505,507],{"href":506},"\u002Fsupabase-backups","Qué hace eso exactamente"," está dibujado en la\npágina de copias.",[10,510,511,514],{},[20,512,513],{},"Supabase es lo único que Care puede copiar",", así que si tus datos viven en\nFirebase o en otro sitio, esta sección entera no está a tu alcance y la mitad que\nescanea es lo que Reeve tiene que ofrecerte. Vibe App Scanner y SafeToShip\ncomprueban las reglas de seguridad de Firebase, que es lo más parecido que hay en\nesta página.",[38,516,518],{"id":517},"qué-te-llevas-por-una-suscripción-mensual","¿Qué te llevas por una suscripción mensual?",[10,520,521],{},"En nueve de los diez, más escaneos. En Reeve, los escaneos y además lo que pasa\ndespués de que uno de ellos encuentre algo.",[523,524,525],"comparison-table",{},[91,526,527,542],{},[94,528,529],{},[97,530,531,533,536,539],{},[100,532],{},[100,534,535],{},"Una suscripción de escaneo",[100,537,538],{},"Reeve Monitor",[100,540,541],{},"Reeve Care",[116,543,544,557,570,582,594,608,620,631,643,655,666,679,692],{},[97,545,546,549,552,555],{},[121,547,548],{},"Reescaneos con horario",[121,550,551],{},"Sí, en los planes de pago",[121,553,554],{},"Cada hora",[121,556,554],{},[97,558,559,562,565,568],{},[121,560,561],{},"Comprobaciones de disponibilidad",[121,563,564],{},"CheckVibe, cada 60 segundos",[121,566,567],{},"Cada 60 segundos",[121,569,567],{},[97,571,572,575,578,580],{},[121,573,574],{},"Aviso cuando algo cambia",[121,576,577],{},"En algunos",[121,579,135],{},[121,581,135],{},[97,583,584,587,590,592],{},[121,585,586],{},"Un informe mensual",[121,588,589],{},"En ninguno que leyéramos",[121,591,135],{},[121,593,135],{},[97,595,596,599,602,605],{},[121,597,598],{},"Aplicaciones incluidas",[121,600,601],{},"Varía",[121,603,604],{},"Tres",[121,606,607],{},"Una, cinco en Pro",[97,609,610,613,615,617],{},[121,611,612],{},"Una copia de tu base de datos",[121,614,169],{},[121,616,169],{},[121,618,619],{},"Diaria",[97,621,622,625,627,629],{},[121,623,624],{},"Releída antes de contar",[121,626,169],{},[121,628,169],{},[121,630,135],{},[97,632,633,636,638,640],{},[121,634,635],{},"Puntos de restauración guardados",[121,637,169],{},[121,639,169],{},[121,641,642],{},"30, 90 en Pro",[97,644,645,648,650,652],{},[121,646,647],{},"Tus archivos subidos",[121,649,169],{},[121,651,169],{},[121,653,654],{},"Con una clave Storage",[97,656,657,660,662,664],{},[121,658,659],{},"Devolverla es un botón",[121,661,169],{},[121,663,169],{},[121,665,135],{},[97,667,668,671,674,676],{},[121,669,670],{},"Qué puede copiar",[121,672,673],{},"Nada",[121,675,673],{},[121,677,678],{},"Solo Supabase",[97,680,681,684,687,690],{},[121,682,683],{},"Prueba gratuita",[121,685,686],{},"7 a 14 días en algunos",[121,688,689],{},"7 días",[121,691,689],{},[97,693,694,697,700,703],{},[121,695,696],{},"Precio cuando lo leímos",[121,698,699],{},"$24 a $49 al mes",[121,701,702],{},"$12 al mes",[121,704,705],{},"$49 al mes",[10,707,708,709,713],{},"Esas cifras de los demás son las que enseñaban el 7 de septiembre de 2026 los\ncinco vendedores que publican alguna: SafeToShip $24, Vibe App Scanner $29 o $49,\nVibeEval $49 con un plan de equipo de $149, Defencecore $29 y SupaExplorer más\nabajo, en $6.75 detrás de un banner de descuento. CheckVibe y LaunchGuard no\npublican ninguna cifra. Lee el precio actual en la página del propio vendedor\nantes de comprar nada, y eso incluye ",[58,710,712],{"href":711},"\u002Fpricing","el nuestro",", que a veces está por\ndebajo de la cifra de lista de aquí y nunca por encima.",[10,715,716],{},"Todos los planes de pago de aquí se pueden probar antes de que te cobren. Reeve\nte da siete días, Defencecore siete, y VibeEval anuncia catorce sin tarjeta. Los\ndemás no lo dicen en sus páginas de precios.",[10,718,719,720,723,724,727],{},"De esa última fila salen dos cosas. ",[20,721,722],{},"Reeve Monitor cuesta $12 al mes"," por tres\naplicaciones, por debajo de todos los planes de pago de aquí salvo uno rebajado,\ny es la mitad de vigilancia completa: reescaneos cada hora, una sonda de\ndisponibilidad cada 60 segundos, avisos cuando algo cambia y un informe mensual.\nY ",[20,725,726],{},"Reeve Care cuesta $49 al mes",", que es exactamente lo que cobran VibeEval Pro\ny Vibe App Scanner Pro, siendo la única suscripción de la página que además\nguarda una copia verificada de tu base de datos y la devuelve cuando la pides.\nPor encima, Care Pro a $79 añade cinco aplicaciones, copias dos veces al día y\nuna página de estado pública, y Care Max a $139 las toma cuatro veces al día y\nqueda por debajo del plan de equipo de VibeEval de $149.",[38,729,731],{"id":730},"dónde-reeve-no-es-la-respuesta","Dónde Reeve no es la respuesta",[10,733,734],{},"Tres trabajos de esta página que Reeve no hace en absoluto.",[736,737,738,744,750],"ul",{},[28,739,740,743],{},[20,741,742],{},"Leer tu código fuente."," CheckVibe lo hace si conectas GitHub, y los\nescáneres de secretos especializados en ese trabajo llegan más hondo que\ncualquiera de los dos. Es además la única forma de encontrar una clave que se\nfue de tu aplicación hace meses y sigue en su historial.",[28,745,746,749],{},[20,747,748],{},"Probar la aplicación con la sesión iniciada."," VibeEval conduce un navegador\nde verdad por las pantallas de acceso, Vibe App Scanner hace escaneos\nautenticados en su plan más alto, y el plan de pago de LaunchGuard lleva a\nClaude Code por escenarios de autorización. Reeve nunca inicia sesión, nunca\nescribe y nunca se descarga una fila, que es lo que hace seguro apuntarlo a una\naplicación en producción con clientes reales, y que es también por lo que un\nfallo que solo se le muestra a un usuario con sesión nos queda invisible.",[28,751,752,755],{},[20,753,754],{},"Ser abierto, o dejarse conducir por tu agente."," Supabomb es de código\nabierto y está escrito en Python. Vibe App Scanner publica un servidor MCP,\nCheckVibe lleva sus hallazgos a Claude o Cursor, y el advisor de Supabase se\nalcanza por el propio servidor MCP de Supabase. Reeve no publica ni su código\nni un servidor MCP.",[10,757,758],{},"Dónde sí es Reeve la respuesta: tu aplicación está en directo, quieres saber qué\nles entrega a los desconocidos ahora mismo sin conectarle ninguna cuenta a nada,\nquieres un informe que te diga lo que hiciste bien con la misma claridad que lo\nque está abierto, y te gustaría que alguien tuviera una copia verificada de tu\nbase de datos el día en que salga mal.",[38,760,762],{"id":761},"qué-estás-entregando-cuando-una-herramienta-lee-tu-código","¿Qué estás entregando cuando una herramienta lee tu código?",[10,764,765],{},"Acceso permanente a todo lo del repositorio, que es una cosa mucho más grande que\nla aplicación.",[10,767,768,769,772,773,776,777,780],{},"Tu repositorio no es tu aplicación. Guarda cada clave que subiste alguna vez y\nluego quitaste, los archivos de semilla y de prueba con datos de clientes que\nparecen reales, la rama a medias que nadie desplegó, y las instrucciones que\nescribiste para tu constructor de IA. Eso último sorprende a la gente. Tu\n",[412,770,771],{},"CLAUDE.md",", tus ",[412,774,775],{},".cursorrules",", tu ",[412,778,779],{},"AGENTS.md",", el prompt largo que describe cómo\nse supone que se comporta el producto: eso es tu forma de pensar el producto, en\ntexto plano, dentro del repositorio. Un escaneo de URL ve la aplicación que ven\ntus visitantes. Una conexión al repositorio lo ve todo, y ahora una segunda\nempresa guarda una copia.",[10,782,783],{},"Tres cosas que comprobar antes de conceder uno:",[736,785,786,792,798],{},[28,787,788,791],{},[20,789,790],{},"Es acceso permanente y no una visita."," Una GitHub App o una autorización\nOAuth sigue funcionando hasta que vayas a revocarla, así que también lee lo que\nsubas el mes que viene. Averigua si puedes limitarla a un repositorio, y\nencuentra el botón de revocar antes de necesitarlo.",[28,793,794,797],{},[20,795,796],{},"Su brecha se convierte en la tuya."," Todo lo que un proveedor guarda sobre ti\nqueda expuesto cuando el proveedor lo queda. Defencecore hace exactamente ese\nargumento a su favor en su propia página, y es un buen argumento: una\nherramienta que solo lee puede \"never become the incident\".",[28,799,800,803],{},[20,801,802],{},"Una herramienta que inicia sesión puede cambiar cosas."," Un escáner que\nconduce un navegador por tu login hace lo que hace un usuario, sobre tus datos\nen directo. Lee qué dice que va a pulsar y qué no.",[10,805,806],{},"Esto es un intercambio y no un aviso. Un escáner de repositorio encuentra la\nclave que borraste en abril y nada que lea tu sitio en directo lo hará nunca, así\nque si esa es tu pregunta, el acceso es lo que cuesta responderla.",[38,808,810],{"id":809},"cuál-deberías-elegir","¿Cuál deberías elegir?",[10,812,813],{},"Cinco situaciones, y dos de ellas no terminan con nosotros.",[736,815,816,827,833,839,845],{},[28,817,818,821,822,826],{},[20,819,820],{},"Quieres saber ahora mismo y gratis qué le enseña tu aplicación a un\ndesconocido."," ",[58,823,825],{"href":824},"\u002Fsecurity-scanner","El escaneo de Reeve"," o LaunchGuard. Ninguno\nte pide registrarte, y los dos vuelven en menos de un minuto. SafeToShip y\nSupaExplorer también escanean sin cuenta.",[28,828,829,832],{},[20,830,831],{},"Estás en Supabase y nunca has abierto el Security Advisor."," Ese primero,\nantes que nada con precio en esta página. Es gratis y lee lo que ningún escaneo\ndesde fuera puede leer.",[28,834,835,838],{},[20,836,837],{},"Quieres que lean tu código fuente, o que prueben la aplicación con la sesión\niniciada."," CheckVibe para el repositorio, VibeEval o el plan más alto de Vibe\nApp Scanner para lo que hay detrás del login. Lee la sección de arriba sobre lo\nque cuesta ese acceso antes de concederlo.",[28,840,841,844],{},[20,842,843],{},"Quieres la aplicación vigilada y estás contando cada euro."," Reeve Monitor,\n$12 al mes por tres aplicaciones: reescaneos cada hora, una sonda de\ndisponibilidad cada 60 segundos, avisos y un informe mensual, y ninguna copia\nde seguridad.",[28,846,847,850],{},[20,848,849],{},"Tienes clientes reales y a nadie que vaya a ejecutar una restauración bajo\npresión."," Reeve Care, $49 al mes, que es el escaneo y la vigilancia y una copia\nverificada de tu base de datos que vuelve con un botón. Si tus datos no están\nen Supabase, la mitad de las copias no te aplica.",[38,852,854],{"id":853},"qué-hacer-esta-semana","Qué hacer esta semana",[856,857,858],"key-takeaways",{},[736,859,860,863,866,869,872,875],{},[28,861,862],{},"Abre tu Supabase Security Advisor antes de pagarle a nadie. Es gratis, ya está en tu panel, y lee cosas a las que no llega ningún escaneo desde fuera.",[28,864,865],{},"Pasa dos escáneres de URL gratuitos por la misma aplicación y pon los informes uno al lado del otro. Donde no coincidan es donde uno de los dos está adivinando.",[28,867,868],{},"Mira qué dice cada uno sobre la clave publicable de tu bundle. Una herramienta que la marca crítica lo marcará todo como crítico, y aprenderás a ignorarlo todo.",[28,870,871],{},"Lee las líneas que dicen que una comprobación no pudo ejecutarse antes que las que dicen que una pasó. Un informe sin ninguna línea así no te está diciendo que no hubo ninguna.",[28,873,874],{},"Antes de conectar un repositorio o una cuenta de Supabase a nada, comprueba qué abarca la autorización, si se puede limitar a un proyecto, y dónde está el botón de revocar.",[28,876,877],{},"Decide aparte quién guarda una copia de tu base de datos. Nueve de las diez herramientas de arriba paran en contártelo, y las suscripciones altas de solo escaneo cuestan lo mismo que la única que no.",[10,879,880,883,884,887,888,892],{},[58,881,882],{"href":824},"El escaneo de seguridad gratuito de Reeve"," lee una URL en\ndirecto en unos veinte segundos sin cuenta, califica lo que encontró, y lista lo\nque hiciste bien junto a lo que está abierto. Que vigilen una aplicación después\nempieza en $12 al mes, y las copias con restauración de un botón en $49;\n",[58,885,886],{"href":711},"los planes están aquí",". Si prefieres repasar tu aplicación tú mismo\nprimero, ",[58,889,891],{"href":890},"\u002Fchecklist","la lista de seguridad de 10 minutos"," es el mismo terreno\nsin una herramienta de por medio.",{"title":894,"searchDepth":895,"depth":895,"links":896},"",3,[897,899,900,901,902,903,904,905,906,907,908],{"id":40,"depth":898,"text":41},2,{"id":85,"depth":898,"text":86},{"id":284,"depth":898,"text":285},{"id":425,"depth":898,"text":426},{"id":473,"depth":898,"text":33},{"id":493,"depth":898,"text":494},{"id":517,"depth":898,"text":518},{"id":730,"depth":898,"text":731},{"id":761,"depth":898,"text":762},{"id":809,"depth":898,"text":810},{"id":853,"depth":898,"text":854},"Fundamentos de seguridad","\u002Fblog\u002Fvibe-coding-security-scanners-compared\u002Fcover-1200x630.png","Una lupa a la izquierda lanza arcos de sonar sobre un campo disperso de ventanas de aplicación, cada arco más tenue que el anterior.","El mejor escáner de seguridad para vibe coding depende de tres preguntas que ninguna lista de funciones responde. Diez herramientas, con precios.",false,"md",[916,919,922,925,928,931],{"q":917,"a":918},"¿Qué escáner de seguridad para vibe coding es gratis?","Varios escanean sin cobrar, y cada uno entiende algo distinto por ello. Supabase Security Advisor es gratis del todo y vive en el panel al que ya entras. Cinco escanean sin ninguna cuenta: Reeve, LaunchGuard, SupaExplorer, SafeToShip, cuya página de precios dice \"no account needed\", y Supabomb, porque lo ejecutas en tu propia máquina. De esos cinco, LaunchGuard, SupaExplorer y Supabomb además enseñan el informe entero gratis, mientras que Reeve muestra la nota, la puntuación y los recuentos en unos veinte segundos y pide un correo antes de los hallazgos detallados, y SafeToShip cobra $9 por ellos. CheckVibe te manda a una página de registro, y VibeEval y Defencecore dejan el informe detrás de una prueba.",{"q":920,"a":921},"¿Cuánto cuesta un escáner de seguridad para vibe coding?","Entre $24 y $49 al mes en los cinco que publicaban una cifra cuando los leímos el 7 de septiembre de 2026: SafeToShip $24, Vibe App Scanner $29 o $49, VibeEval $49 con un plan de equipo de $149, Defencecore $29 y SupaExplorer más abajo, en $6.75 detrás de un banner de descuento. Reeve Monitor cuesta $12 al mes por reescaneos cada hora, comprobaciones de disponibilidad cada 60 segundos, avisos y un informe mensual sobre tres aplicaciones, lo que queda por debajo de todos los planes de pago de arriba salvo el rebajado. Reeve Care cuesta $49, lo mismo que cobran los planes altos de escaneo, y añade copias diarias de tu base de datos de Supabase que se releen antes de contar, con restauración de un botón. Comprueba cada cifra en la página del vendedor antes de comprar, la nuestra incluida.",{"q":923,"a":924},"¿Alguno necesita la contraseña de mi base de datos?","Ninguno de los escáneres de URL, Reeve incluido. Leen tu aplicación desde fuera, así que no hay nada que conectar. Defencecore te pide autorizar acceso de solo lectura a los registros de un proyecto de Supabase, que es un permiso de cuenta y no tu contraseña. Supabase Security Advisor necesita tu acceso a Supabase porque forma parte de Supabase. Supabomb es una herramienta de línea de comandos que ejecutas tú, así que lo que le des depende de ti.",{"q":926,"a":927},"¿Cuáles detectan problemas de RLS en Supabase?","La mayoría de esta lista dice que sí, y encuentran cosas distintas. Un escáner de URL como Reeve le pregunta a tu proyecto si una petición anónima recibe filas, que es la consecuencia, y lee el recuento de una cabecera de respuesta sin traer ni una fila. Supabase Security Advisor lee la configuración e informa de las tablas con Row Level Security apagada o sin ninguna política, que es la causa. Las dos cosas se separan más a menudo de lo que uno espera, así que un advisor limpio y un escáner que encuentra filas en esa misma tabla no se contradicen.",{"q":929,"a":930},"¿Por qué una herramienta dice 40 problemas y otra dice 2?","Porque cuentan con reglas distintas. Las herramientas anuncian desde nueve comprobaciones hasta más de cien, y una lista más larga produce un informe más largo sobre la misma aplicación. La causa mayor es que algunos escáneres tratan como problema cualquier clave que encuentran en tu JavaScript, incluidas las publicables, que deben estar ahí. Reeve descifra la clave y lee el rol que lleva dentro, así que una clave publicable vuelve como algo que hiciste bien y no como un hallazgo. Mira qué dice cada herramienta sobre tu clave publicable de Supabase antes de creerte su total.",{"q":932,"a":933},"¿Esta comparativa está sesgada?","Sí. Reeve es una de las diez herramientas de la tabla y la hacemos nosotros, así que lee la página sabiéndolo. Lo que hemos hecho al respecto: nombrar los tres trabajos de esta página que Reeve no hace en absoluto, mandarte a la herramienta gratuita de tu propio panel de Supabase antes que a ninguna de pago, imprimir los precios de los demás junto al nuestro, y publicar el conjunto de datos entero que hay detrás de nuestras comprobaciones bajo una licencia abierta para que se puedan auditar. Cada fila se leyó en la página del propio vendedor el 7 de septiembre de 2026 y ninguna está enlazada, así que aquí no hay nada patrocinado.","\u002Fblog\u002Fvibe-coding-security-scanners-compared\u002Fcard-800x500.png",[936,937,938,939,940,941,942,943],"mejor escáner de seguridad para vibe coding","comparativa de escáneres de seguridad vibe coding","alternativa a checkvibe","alternativa a vibe app scanner","alternativa a launchguard","comparativa escáner de seguridad supabase","escáner de seguridad gratis o de pago","AI app security tools 2026",{},true,"Escáneres de seguridad para vibe coding comparados","\u002Fblog\u002Fvibe-coding-security-scanners-compared","2026-09-07",{"title":5,"description":912},"blog\u002Fvibe-coding-security-scanners-compared",[952,953,954],"No hay un único mejor escáner de seguridad para vibe coding, porque la mayoría lee la misma superficie y se diferencian en qué hacen con ella. Siete de los diez de aquí funcionan con nada más que una URL.","Tres preguntas los separan: si una herramienta distingue una clave que pertenece a tu aplicación de una que no, si avisa cuando una comprobación no obtuvo respuesta, y si algo devuelve tus datos después.","Reeve responde que sí a las tres, por $12 al mes para vigilar una aplicación y $49 para copiarla, que es lo que cobran aquí las suscripciones de solo escaneo por no hacer ninguna de las dos. Lo hacemos nosotros, así que los tres trabajos que Reeve no hace están cerca del final.","nPcVfj5IUVU7uRgY5Yj0rcCZtWC3nmDx3lgPlIvw6Bw",[957,964,970,976,982,988,994,1000,1006,1012,1018,1024,1030,1036,1042,1048,1054,1055,1061,1066,1072,1078,1084,1090,1096,1102,1108,1114,1120,1126,1132,1138,1144,1150,1156,1162,1167,1173,1179,1184,1189,1195],{"path":958,"title":959,"description":960,"published":961,"category":962,"image":963,"draft":913},"\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","Backups","\u002Fblog\u002Fsupabase-backup-auth-users\u002Fcard-800x500.png",{"path":965,"title":966,"description":967,"published":968,"category":909,"image":969,"draft":913},"\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":971,"title":972,"description":973,"published":974,"category":909,"image":975,"draft":913},"\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":977,"title":978,"description":979,"published":980,"category":909,"image":981,"draft":913},"\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":983,"title":984,"description":985,"published":986,"category":909,"image":987,"draft":913},"\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":989,"title":990,"description":991,"published":992,"category":909,"image":993,"draft":913},"\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":995,"title":996,"description":997,"published":998,"category":909,"image":999,"draft":913},"\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":1001,"title":1002,"description":1003,"published":1004,"category":909,"image":1005,"draft":913},"\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":1007,"title":1008,"description":1009,"published":1010,"category":909,"image":1011,"draft":913},"\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":1013,"title":1014,"description":1015,"published":1016,"category":962,"image":1017,"draft":913},"\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":1019,"title":1020,"description":1021,"published":1022,"category":962,"image":1023,"draft":913},"\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":1025,"title":1026,"description":1027,"published":1028,"category":962,"image":1029,"draft":913},"\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":1031,"title":1032,"description":1033,"published":1034,"category":909,"image":1035,"draft":913},"\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":1037,"title":1038,"description":1039,"published":1040,"category":909,"image":1041,"draft":913},"\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":1043,"title":1044,"description":1045,"published":1046,"category":909,"image":1047,"draft":913},"\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":1049,"title":1050,"description":1051,"published":1052,"category":909,"image":1053,"draft":913},"\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":947,"title":5,"description":912,"published":948,"category":909,"image":934,"draft":913},{"path":1056,"title":1057,"description":1058,"published":1059,"category":909,"image":1060,"draft":913},"\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":60,"title":1062,"description":1063,"published":1064,"category":909,"image":1065,"draft":913},"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":1067,"title":1068,"description":1069,"published":1070,"category":909,"image":1071,"draft":913},"\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":1073,"title":1074,"description":1075,"published":1076,"category":909,"image":1077,"draft":913},"\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":1079,"title":1080,"description":1081,"published":1082,"category":909,"image":1083,"draft":913},"\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":1085,"title":1086,"description":1087,"published":1088,"category":962,"image":1089,"draft":913},"\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":1091,"title":1092,"description":1093,"published":1094,"category":909,"image":1095,"draft":913},"\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":1097,"title":1098,"description":1099,"published":1100,"category":962,"image":1101,"draft":913},"\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":1103,"title":1104,"description":1105,"published":1106,"category":909,"image":1107,"draft":913},"\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":1109,"title":1110,"description":1111,"published":1112,"category":909,"image":1113,"draft":913},"\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":1115,"title":1116,"description":1117,"published":1118,"category":909,"image":1119,"draft":913},"\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":1121,"title":1122,"description":1123,"published":1124,"category":909,"image":1125,"draft":913},"\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":1127,"title":1128,"description":1129,"published":1130,"category":962,"image":1131,"draft":913},"\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":1133,"title":1134,"description":1135,"published":1136,"category":962,"image":1137,"draft":913},"\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":1139,"title":1140,"description":1141,"published":1142,"category":909,"image":1143,"draft":913},"\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":1145,"title":1146,"description":1147,"published":1148,"category":909,"image":1149,"draft":913},"\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":1151,"title":1152,"description":1153,"published":1154,"category":962,"image":1155,"draft":913},"\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":1157,"title":1158,"description":1159,"published":1160,"category":909,"image":1161,"draft":913},"\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":1163,"title":1164,"description":1165,"published":1160,"category":909,"image":1166,"draft":913},"\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":1168,"title":1169,"description":1170,"published":1171,"category":909,"image":1172,"draft":913},"\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":1174,"title":1175,"description":1176,"published":1177,"category":962,"image":1178,"draft":913},"\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":74,"title":1180,"description":1181,"published":1182,"category":909,"image":1183,"draft":913},"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":1185,"title":1186,"description":1187,"published":1182,"category":962,"image":1188,"draft":913},"\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":1190,"title":1191,"description":1192,"published":1193,"category":962,"image":1194,"draft":913},"\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":441,"title":1196,"description":1197,"published":1193,"category":909,"image":1198,"draft":913},"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",1790150954100]