[{"data":1,"prerenderedAt":809},["ShallowReactive",2],{"blog-es-is-cursor-ai-safe":3,"blog-index-es":566},{"id":4,"title":5,"body":6,"category":517,"cover":518,"coverAlt":519,"description":520,"draft":521,"extension":522,"faq":523,"image":542,"keywords":543,"meta":554,"navigation":555,"ogTitle":5,"path":556,"published":557,"seo":558,"stem":559,"tldr":560,"updated":564,"__hash__":565},"blog_es\u002Fblog\u002Fis-cursor-ai-safe.md","¿Es seguro Cursor AI? El editor, el código y la app que publicaste",{"type":7,"value":8,"toc":503},"minimark",[9,13,21,24,29,32,54,57,63,67,70,73,84,93,102,111,116,120,123,132,135,157,176,180,183,192,195,198,206,211,215,218,221,244,247,251,254,262,265,370,382,393,397,400,439,443,446,458,462,492],[10,11,12],"p",{},"Construiste algo en Cursor, funciona, y estás a punto de meter a personas\nreales. En algún momento de esa semana escribiste «es seguro cursor ai» en un\nbuscador, y lo que salió fue una página sobre los ajustes de privacidad de\nCursor, una página sobre si el código escrito por IA vale algo, y una página\nsobre una descarga de punteros de ratón personalizados. Ninguna dijo una palabra\nsobre la app que estás a punto de publicar.",[10,14,15,16,20],{},"Aquí está la parte que la mayoría de esas respuestas se equivoca: ",[17,18,19],"strong",{},"«¿es seguro\nCursor AI?» son tres preguntas en una sola frase",", y tienen tres respuestas\ndistintas. Dos son sobre Cursor y los modelos que hay detrás. La tercera es\nsobre lo que publicaste, y es la que decide si un desconocido puede leer los\ndatos de tus usuarios.",[10,22,23],{},"Piensa en Cursor como un contratista al que contrataste para construir una\ncasa. Si se queda con una copia de tus planos es una pregunta. Si lo que\nconstruye cumple la normativa es una segunda. Si las puertas cierran con llave\nuna vez que te has mudado es la tercera, y sigue siendo tu pregunta mientras\nvivas ahí.",[25,26,28],"h2",{"id":27},"es-seguro-cursor-ai","¿Es seguro Cursor AI?",[10,30,31],{},"Como editor, es una herramienta en la nube corriente: un interruptor de\nprivacidad, una página de seguridad publicada y una atestación SOC 2 Tipo II.\nEso responde una de las tres preguntas, y no la que decide si desconocidos\npueden leer los datos de tus usuarios.",[33,34,35,42,48],"ol",{},[36,37,38,41],"li",{},[17,39,40],{},"El editor."," Si Cursor guarda tu código, entrena con él o se lo pasa a\notro. Esta es la copia de los planos que tiene el contratista.",[36,43,44,47],{},[17,45,46],{},"El código."," Si lo que escribe la IA es seguro. Esto es si la casa cumple\nla normativa, y nadie lo inspecciona al entrar.",[36,49,50,53],{},[17,51,52],{},"La app que publicaste."," Lo que un desconocido puede alcanzar desde la\ncalle: una clave en el código que descarga un navegador, una base de datos\nque responde sin iniciar sesión, un archivo que nunca debió tener una URL.\nEstas son las puertas.",[10,55,56],{},"Nada del lado de Cursor puede responder la tercera. Nada del nuestro puede\nresponder las dos primeras.",[58,59],"diagram",{"alt":60,"caption":61,"src":62},"Tres paneles uno junto a otro. El primero tiene el logo de Cursor con una nube y un candado al lado. El segundo tiene un signo de código con un destello encima. El tercero tiene una página de navegador con tres visitantes que alargan la mano hacia ella y una lupa dibujada solo sobre ese panel.","Tres preguntas dentro de una búsqueda. Un escaneo desde fuera lee el tercer panel y nada de los otros dos.","\u002Fblog\u002Fis-cursor-ai-safe\u002Fthree-questions-1600x700.png",[25,64,66],{"id":65},"cursor-guarda-mi-código","¿Cursor guarda mi código?",[10,68,69],{},"Mientras tarda en responderte, sí. Después depende de un interruptor.",[10,71,72],{},"Cursor es una herramienta en la nube. Cuando le preguntas algo, las partes\nrelevantes de tu proyecto salen de tu ordenador, van a los servidores de Cursor\ny pasan a un proveedor de modelos (OpenAI, Anthropic, Google, el modelo que\nhayas elegido) para ser respondidas. Así funciona el producto. Los planos\ntienen que llegar al contratista.",[10,74,75,76,83],{},"Lo que pasa después es el interruptor, y la\n",[77,78,82],"a",{"href":79,"rel":80},"https:\u002F\u002Fcursor.com\u002Fdata-use",[81],"nofollow","página de uso de datos"," de Cursor pone las dos\nposiciones en un mismo párrafo. Con el Privacy Mode encendido, «los datos de\nclientes no serán usados por Cursor para entrenar» y Cursor «mantiene acuerdos\nde retención cero de datos (ZDR) con todos los proveedores», es decir, las\nempresas que ejecutan los modelos se comprometen a no quedarse con nada. Con él\napagado, Cursor «puede usar y almacenar datos del código, prompts, acciones del\neditor, fragmentos de código y otros datos y acciones de código para mejorar\nnuestras funciones de IA y entrenar nuestros modelos».",[10,85,86,87,92],{},"El interruptor está disponible en todos los planes, el gratuito incluido, y un\nadministrador de equipo o de empresa puede encenderlo para todos e impedir que\nlos miembros lo apaguen. La propia\n",[77,88,91],{"href":89,"rel":90},"https:\u002F\u002Fcursor.com\u002Fdocs\u002Fenterprise\u002Fsecurity-hardening",[81],"guía de endurecimiento","\nde Cursor dice que viene encendido por defecto en las cuentas Enterprise. En un\nplan individual es un ajuste, y ese ajuste vale la pena buscarlo hoy.",[10,94,95,96,101],{},"Una cosa más sobre él, porque ya ha pillado a alguien. Desde mediados de 2025\nhay dos versiones: «Privacy Mode», que permite a Cursor guardar algunos datos\npara funciones como sus agentes en la nube y las memorias, y «Privacy Mode\n(Legacy)», que no guarda nada. En julio de 2026 un\n",[77,97,100],{"href":98,"rel":99},"https:\u002F\u002Fnews.ycombinator.com\u002Fitem?id=48737226",[81],"usuario de Hacker News","\ncontó que inició sesión en la app de iOS y encontró su cuenta movida del ajuste\nantiguo al actual. Un empleado de Cursor respondió que el aviso para activar\nlos agentes en la nube lo había hecho «sin dejar claro qué significaba ni que\nes difícil de deshacer», y que volver atrás no estaba disponible en la app. Si\nelegiste la más estricta, comprueba que sigue seleccionada.",[10,103,104,105,110],{},"Los certificados responden una pregunta más estrecha de lo que parece. La\n",[77,106,109],{"href":107,"rel":108},"https:\u002F\u002Fcursor.com\u002Fsecurity",[81],"página de seguridad"," de Cursor lista una\natestación SOC 2 Tipo II, ISO\u002FIEC 27001 e ISO\u002FIEC 42001. Significan que un\nauditor externo comprobó que Cursor tiene controles sobre cómo maneja los\ndatos que guarda, igual que el certificado de seguro de un contratista dice\nque el contratista está asegurado. No dicen nada sobre el código que escribe\nni sobre la app que publicas con él.",[58,112],{"alt":113,"caption":114,"src":115},"A la izquierda, una ventana de editor de la que sale un documento por una flecha, a través de una nube, hasta un servidor a la derecha. Bajo la nube hay un interruptor. Junto al interruptor en posición encendida, un cilindro de almacenamiento dibujado con línea discontinua, y junto a él en posición apagada, un cilindro sólido con un destello encima.","Tu código sale de tu máquina en cada petición. El interruptor decide si algo se conserva después, y si se usa para entrenar.","\u002Fblog\u002Fis-cursor-ai-safe\u002Fwhere-your-code-goes-1600x680.png",[25,117,119],{"id":118},"qué-sube-la-indexación-del-código","¿Qué sube la indexación del código?",[10,121,122],{},"Un índice de tu proyecto, guardado en los servidores de Cursor, con las rutas\nde los archivos cifradas y el código en sí nunca almacenado como texto\nlegible.",[10,124,125,126,131],{},"La indexación es la forma en que Cursor responde una pregunta sobre todo tu\nproyecto y no solo sobre el archivo que tienes abierto. Parte tus archivos en\ntrozos, los envía a los servidores de Cursor para convertirlos en embeddings\n(un resumen numérico de de qué trata cada trozo) y conserva esos embeddings\npara que, cuando preguntes «dónde gestionamos los reembolsos», pueda encontrar\nlos trozos correctos. La\n",[77,127,130],{"href":128,"rel":129},"https:\u002F\u002Fcursor.com\u002Fdocs\u002Fcontext\u002Fcodebase-indexing",[81],"documentación"," de Cursor\ndice: «Las rutas de los archivos se cifran antes de enviarse a los servidores\nde Cursor. El contenido del código nunca se almacena en texto plano». Lo que\nqueda de su lado es un mapa de tu código, y eso es algo distinto de una copia.",[10,133,134],{},"Dos cosas conviene saber sobre el mapa.",[10,136,137,140,141,145,146,149,150,153,154,156],{},[17,138,139],{},"Algunos archivos se dejan fuera por defecto, y puedes añadir más."," Cursor\nomite todo lo que esté en tu ",[142,143,144],"code",{},".gitignore"," y una lista por defecto que incluye\n",[142,147,148],{},".env*",", el archivo donde suelen vivir tus claves secretas. Un archivo\n",[142,151,152],{},".cursorignore"," en la raíz del proyecto, escrito con la misma sintaxis que\n",[142,155,144],{},", deja fuera del índice y de lo que se muestra a la IA cualquier\notra cosa que nombres.",[10,158,159,162,163,168,169,171,172,175],{},[17,160,161],{},"El terminal del agente no lee esa lista."," Esta es la salvedad que importa\npara las claves. La\n",[77,164,167],{"href":165,"rel":166},"https:\u002F\u002Fcursor.com\u002Fdocs\u002Fcontext\u002Fignore-files",[81],"página sobre archivos de exclusión","\nde Cursor dice que «las herramientas de terminal y de servidor MCP que usa el\nAgente no pueden bloquear el acceso al código regido por ",[142,170,152],{},"», y\nque «no se garantiza una protección completa debido a la imprevisibilidad de\nlos LLM». Cuando el agente ejecuta un comando en tu máquina, puede leer ",[142,173,174],{},".env","\ncomo lo haría cualquier comando. El archivo está fuera del índice y sigue al\nalcance. Si hay una clave en la carpeta de proyecto que tienes abierta en\nCursor, trátala como una clave que el agente puede ver.",[25,177,179],{"id":178},"es-seguro-el-código-que-escribe-cursor","¿Es seguro el código que escribe Cursor?",[10,181,182],{},"No por defecto, y eso está medido, aunque la medición es de los modelos que\nusa Cursor y no de Cursor en sí.",[10,184,185,186,191],{},"Veracode, una empresa que vende pruebas de seguridad de código, ha pasado más\nde 150 modelos por las mismas 80 tareas de programación, en cuatro lenguajes,\ncada tarea con una forma segura y otra insegura de resolverla. Su\n",[77,187,190],{"href":188,"rel":189},"https:\u002F\u002Fwww.veracode.com\u002Fblog\u002Fspring-2026-genai-code-security\u002F",[81],"actualización de primavera de 2026",",\npublicada el 24 de marzo de 2026, encontró que solo el 55 % de los resultados\neran seguros, una cifra que Veracode califica de «prácticamente idéntica a la\nde hace dos años», mientras que la proporción que compilaba superaba el 95 %.\nEn dos de los cuatro tipos de fallo los modelos casi nunca eligieron la versión\nsegura: el cross-site scripting, que permite que el texto de un visitante se\nejecute como código en el navegador de otro, pasó el 15 % de las veces, y la\ninyección de logs el 13 %.",[10,193,194],{},"El propio resumen de Veracode es que los modelos «se han vuelto excelentes\nescribiendo código que compila. Han fracasado escribiendo código que es\nseguro».",[10,196,197],{},"Para ti, la persona que no escribió el código, la brecha entre esos dos números\nes todo el hallazgo. La prueba que haces en un proyecto de Cursor es si\nfunciona: recorres la app a clics y aparecen las cosas correctas. Ese es el\n95 %. La prueba que nadie hace es si el código decidió quién puede ver qué, y\nel 55 % dice que esa decisión se tomó más o menos la mitad de las veces. Una\napp puede pasar la primera prueba por completo y fallar la segunda, porque una\npágina que te muestra tus pedidos y una página que muestra a cualquiera los\npedidos de todos se ven idénticas para la persona dueña de la cuenta.",[10,199,200,201,205],{},"Dónde corresponde esa decisión, y por qué «carga los pedidos» nunca la toma por\nsí sola, está en el centro de la ",[77,202,204],{"href":203},"\u002Fis-your-cursor-app-safe","guía de Cursor",".",[58,207],{"alt":208,"caption":209,"src":210},"Dos barras horizontales en una misma escala. La barra superior, encabezada por una marca de verificación, recorre casi todo el ancho y termina en el número 95 con un signo mayor que delante. La barra inferior, encabezada por un candado, se detiene poco después de la mitad y termina en el número 55.","La prueba de primavera de 2026 de Veracode con más de 150 modelos. La barra superior es código que compiló. La inferior es código que fue seguro.","\u002Fblog\u002Fis-cursor-ai-safe\u002Fcompiles-versus-safe-1600x560.png",[25,212,214],{"id":213},"inyección-de-prompts-en-lenguaje-llano","Inyección de prompts, en lenguaje llano",[10,216,217],{},"El modelo trata las instrucciones como instrucciones allí donde las encuentre,\nincluso dentro de cosas que solo tenía que leer.",[10,219,220],{},"Le dices a Cursor «resume este hilo» o «ordena este archivo», y para hacerlo\nlee el hilo o el archivo. Si el hilo contiene una frase escrita para parecer una\ninstrucción a una IA, el modelo puede seguirla, porque no tiene una forma\nfiable de distinguir tu voz de la de la página. Eso es la inyección de prompts,\ny en un agente de programación, que puede editar archivos y ejecutar comandos\nen tu máquina, las consecuencias van más allá de un mal resumen.",[10,222,223,224,229,230,233,234,239,240,243],{},"Dos casos con nombre, ambos contra Cursor. En marzo de 2025 Pillar Security\npublicó\n",[77,225,228],{"href":226,"rel":227},"https:\u002F\u002Fwww.pillar.security\u002Fblog\u002Fnew-vulnerability-in-github-copilot-and-cursor-how-hackers-can-weaponize-code-agents",[81],"«Rules File Backdoor»",":\ninstrucciones ocultas con caracteres Unicode invisibles dentro de un archivo\n",[142,231,232],{},".cursor\u002Frules",", el archivo de configuración que le dice a Cursor cómo quieres\nque escriba tu código. El archivo parecía limpio en el editor y en un diff de\nGitHub, y le decía a la IA en silencio que añadiera a cada página generada un\nscript desde el dominio de un atacante y que nunca lo mencionara. La respuesta\nde Cursor fue que eso no era una vulnerabilidad de su plataforma y que la\nresponsabilidad recae en el usuario. En agosto de 2025 Aim Security reveló\n",[77,235,238],{"href":236,"rel":237},"https:\u002F\u002Fthehackernews.com\u002F2025\u002F08\u002Fcursor-ai-code-editor-fixed-flaw.html",[81],"CVE-2025-54135",",\nque llamaron CurXecute: un mensaje en un canal público de Slack, leído por\nCursor a través de un servidor MCP (un complemento que permite al agente llegar\na herramientas externas), podía hacer que el agente escribiera una entrada en\nsu propia configuración ",[142,241,242],{},"mcp.json",", y Cursor arrancaba esa entrada, ejecutando\nel comando del atacante, antes de que hubieras aprobado el cambio. Cursor lo\ncorrigió en la versión 1.3 el 29 de julio de 2025, y ahora cada cambio en ese\narchivo espera tu aprobación.",[10,245,246],{},"Lo que se deriva para ti es corto. Un archivo de reglas que copiaste de un\nrepositorio o de un artículo es código, y dirige todo lo que el agente escribe\ndespués, así que léelo como código. Mantén Cursor actualizado, porque la\ncorrección de CurXecute fue un número de versión. Y cada servidor MCP que\nconectes y que lea texto de fuera, una bandeja de entrada, una cola de tickets,\nuna búsqueda, le entrega al agente frases que tú no escribiste.",[25,248,250],{"id":249},"qué-dice-un-escaneo-de-30998-apps-en-vivo-sobre-la-tercera-pregunta","Qué dice un escaneo de 30.998 apps en vivo sobre la tercera pregunta",[10,252,253],{},"Que nada del editor llega a la app que publicaste. No podemos distinguir desde\nfuera una app hecha con Cursor de cualquier otra, y ese es el hallazgo.",[10,255,256,257,261],{},"Entre el 12 y el 14 de agosto de 2026 pasamos las nueve comprobaciones externas\nque cualquiera puede ejecutar gratis en nuestra página de inicio por 30.998\napps en vivo. Las encontramos por dónde estaban publicadas: 18.554 en el\ndominio de Lovable, 5.438 en el de Base44, 3.042 en el de Replit, y así en\nadelante. Un proyecto de Cursor se despliega donde tú lo pongas, en Vercel, en\nNetlify, en un dominio que compraste, y la página que descarga un visitante no\nlleva marca alguna del editor que la escribió. Así que no hay una columna de\nCursor en ",[77,258,260],{"href":259},"\u002Fresearch\u002Fvibe-coded-app-security-2026","el informe",", y no puede\nhaberla.",[10,263,264],{},"Lo que sí hay, en cada builder que medimos, es la misma lista corta de cosas\nque un dueño dejó abiertas, y ninguna la decide el editor. Cada proporción de\nabajo es sobre las apps en las que esa comprobación respondió, porque una\ncomprobación que no pudo terminar es desconocida, no aprobada. Ninguna app se\nnombra aquí ni en ningún otro sitio que publiquemos.",[266,267,268,284],"table",{},[269,270,271],"thead",{},[272,273,274,278,281],"tr",{},[275,276,277],"th",{},"Qué comprobamos",[275,279,280],{},"Apps",[275,282,283],{},"Quién lo decide en un proyecto de Cursor",[285,286,287,299,310,321,331,341,359],"tbody",{},[272,288,289,293,296],{},[290,291,292],"td",{},"Una tabla de base de datos legible sin iniciar sesión",[290,294,295],{},"2.096 de 3.680 (57 %)",[290,297,298],{},"Tú, en la base de datos",[272,300,301,304,307],{},[290,302,303],{},"Una ruta de API que respondió con datos a un desconocido",[290,305,306],{},"3.852 de 30.926 (12 %)",[290,308,309],{},"Tú, en el código",[272,311,312,315,318],{},[290,313,314],{},"Source map servido (en Base44, casi siempre la plataforma)",[290,316,317],{},"3.885 de 30.987 (13 %)",[290,319,320],{},"Tú, en el build, fuera de Base44",[272,322,323,326,329],{},[290,324,325],{},"Algo con forma de clave en el código que descarga un visitante",[290,327,328],{},"1.332 de 30.998 (4 %)",[290,330,309],{},[272,332,333,336,339],{},[290,334,335],{},"Una clave que factura a una cuenta o se salta todas las reglas",[290,337,338],{},"52 de 30.998",[290,340,309],{},[272,342,343,353,356],{},[290,344,345,346,348,349,352],{},"Un archivo privado como ",[142,347,174],{}," o ",[142,350,351],{},".git\u002Fconfig"," en una URL pública",[290,354,355],{},"8 de 30.749",[290,357,358],{},"Tú, en el despliegue",[272,360,361,364,367],{},[290,362,363],{},"Faltan cabeceras de seguridad del navegador",[290,365,366],{},"30.756 de 30.981 (99 %)",[290,368,369],{},"Tú, en el host",[10,371,372,373,377,378,381],{},"La primera fila se mide sobre las 3.680 apps que nombraron un proyecto de\nSupabase y cuya base de datos respondió a la pregunta, por eso su base es más\npequeña;\n",[77,374,376],{"href":375},"\u002Fblog\u002Fcan-anyone-read-your-supabase-database","qué lee esa comprobación y qué no","\ntiene la escalera completa. La quinta fila es la que cuesta dinero por sí sola:\nuna clave secreta de OpenAI, Anthropic, AWS o Stripe, o una clave\n",[142,379,380],{},"service_role"," de Supabase, en el código que descarga un navegador.",[10,383,384,385,387,388,392],{},"La última columna es lo que cambia en Cursor. En el dominio propio de un\nbuilder, dos de esas filas pertenecen al host: las cabeceras las envía lo que\nsirve la página, y los source maps siguen la configuración de build del\nbuilder. Un proyecto de Cursor es tu repositorio, tu build y tu despliegue, así\nque cada fila de esa tabla es tuya, incluidas las dos que un dueño de Lovable\nno controla. Eso es más control y más que comprobar, y es por lo que la\n",[77,386,204],{"href":203}," dedica su tiempo a la salida de tu\nbuild y a tu base de datos y no al editor. El\n",[77,389,391],{"href":390},"\u002Fblog\u002Fis-replit-safe","artículo sobre Replit"," hace las mismas tres preguntas a\nuna plataforma que aloja la app y a la vez te deja publicar un servidor propio.",[25,394,396],{"id":395},"la-comprobación-de-cinco-minutos-desde-fuera","La comprobación de cinco minutos desde fuera",[10,398,399],{},"Usa una ventana privada para las tres primeras, para que tu propia sesión no\nresponda por un desconocido.",[33,401,402,413,416,419,432],{},[36,403,404,405,408,409,412],{},"Abre tu dirección publicada con ",[142,406,407],{},"\u002F.env"," al final, y luego con\n",[142,410,411],{},"\u002F.git\u002Fconfig",". Las dos deben fallar. Si alguna muestra texto, rota hoy\ncada clave que contenga y arregla el despliegue para que ese archivo nunca\nse sirva.",[36,414,415],{},"Abre de la misma forma una de tus propias rutas de API, una que no querrías\nque leyera un desconocido. Si responde con datos, esa ruta necesita una\ncomprobación de sesión.",[36,417,418],{},"Abre tu app en vivo y luego la pestaña Sources de las herramientas de\ndesarrollo de tu navegador. Si puedes leer tus archivos originales con sus\ncomentarios, los source maps están activados en tu build de producción.",[36,420,421,422,424,425,427,428,431],{},"Si tus datos están en Supabase, la mitad interior de la comprobación está en\nla ",[77,423,204],{"href":203},": busca ",[142,426,380],{}," y\n",[142,429,430],{},"sk_live_"," en la salida del build, y luego abre la página de políticas.",[36,433,434,435,205],{},"O deja que el escaneo lo haga. Ejecuta estas y el resto de las nueve desde\nfuera, tarda unos 20 segundos, no necesita cuenta e imprime «No se pudo\ncomprobar» para todo lo que no pudo responder en lugar de una marca:\n",[77,436,438],{"href":437},"\u002Fsecurity-scanner","escanea tu app",[25,440,442],{"id":441},"qué-cambia-después-del-siguiente-push","¿Qué cambia después del siguiente push?",[10,444,445],{},"Cualquier cosa. Un proyecto de Cursor sale al mundo cuando haces push, y nada\nentre tu editor e internet vuelve a leer la app en busca de una ruta que perdió\nsu comprobación de sesión, una clave pegada a medianoche para pasar un build\nque fallaba o un source map que volvió a activarse con un cambio de\nconfiguración. El número de Veracode es la razón por la que esto importa más\naquí que en un builder: cada sesión con el agente es código nuevo que compila y\npuede no ser seguro, y un escaneo que hiciste el mes pasado describe la app del\nmes pasado.",[10,447,448,452,453,457],{},[77,449,451],{"href":450},"\u002Fpricing","Reeve Monitor"," está hecho para eso. Vuelve a ejecutar las nueve\ncomprobaciones cada hora en hasta tres apps, vigila la disponibilidad cada 60\nsegundos, te avisa cuando un resultado cambia en lugar de esperar a que mires,\ny envía un informe mensual. Cuesta $12 al mes a precio de lista, con siete días\ngratis antes de cobrarte; la página de precios a veces está por debajo de la\ncifra de aquí y nunca por encima. Monitor vigila y nada más. Si tu app de\nCursor guarda sus datos en Supabase, ",[77,454,456],{"href":455},"\u002Fsupabase-backups","Care"," es el plan que\nademás conserva una copia de esa base de datos, y de tus archivos subidos una\nvez que conectas una credencial de Storage. Si los datos viven en otro sitio,\nMonitor es la mitad que encaja.",[25,459,461],{"id":460},"qué-hacer-esta-semana","Qué hacer esta semana",[463,464,465],"key-takeaways",{},[466,467,468,471,477,480,489],"ul",{},[36,469,470],{},"Busca el Privacy Mode en los ajustes de Cursor y comprueba qué versión está seleccionada. En un equipo, que el administrador lo imponga.",[36,472,473,474,476],{},"Trata cualquier clave que esté en la carpeta de proyecto que tienes abierta como una clave que el agente puede leer. ",[142,475,152],{}," la deja fuera del índice, y el terminal no lee esa lista.",[36,478,479],{},"Lee como código cualquier archivo de reglas o configuración MCP que hayas copiado de internet, y mantén Cursor actualizado.",[36,481,482,483,485,486,488],{},"Abre ",[142,484,407],{}," y ",[142,487,411],{}," en tu dirección publicada desde una ventana privada. Las dos deben fallar.",[36,490,491],{},"Abre tus propias rutas de API sin iniciar sesión. Cualquier ruta que responda con datos privados necesita una comprobación de sesión.",[10,493,494,495,497,498,502],{},"La mitad interior de todo esto, la salida del build y la base de datos, es la\n",[77,496,204],{"href":203},". La\n",[77,499,501],{"href":500},"\u002Fchecklist","lista de seguridad de 10 minutos"," cubre lo que vale la pena\nconfirmar en cualquier app recién lanzada, la haya escrito quien la haya\nescrito.",{"title":504,"searchDepth":505,"depth":505,"links":506},"",3,[507,509,510,511,512,513,514,515,516],{"id":27,"depth":508,"text":28},2,{"id":65,"depth":508,"text":66},{"id":118,"depth":508,"text":119},{"id":178,"depth":508,"text":179},{"id":213,"depth":508,"text":214},{"id":249,"depth":508,"text":250},{"id":395,"depth":508,"text":396},{"id":441,"depth":508,"text":442},{"id":460,"depth":508,"text":461},"Fundamentos de seguridad","\u002Fblog\u002Fis-cursor-ai-safe\u002Fcover-1200x630.png","El logo de Cursor en una baldosa blanca, una flecha a una ventana de editor con un destello, y una página publicada con tres visitantes.","¿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.",false,"md",[524,527,530,533,536,539],{"q":525,"a":526},"¿Cursor entrena con mi código?","Solo con el Privacy Mode apagado. Con él encendido, Cursor afirma que los datos de clientes no se usan para entrenar y que tiene acuerdos de retención cero de datos con cada proveedor de modelos, así que tampoco se queda nada de su lado. Con él apagado, Cursor dice que puede usar y guardar tu código, tus prompts y tus acciones en el editor para mejorar sus funciones y entrenar sus modelos. El interruptor está disponible en todos los planes, incluido el gratuito, y un administrador de equipo puede encenderlo para todos.",{"q":528,"a":529},"¿Qué hace realmente el Privacy Mode?","Decide qué pasa con tu código después de que una petición ha sido respondida. Tu código sigue saliendo de tu ordenador en cada petición, porque así funciona un editor en la nube. El Privacy Mode impide que Cursor entrene con él y obliga a los proveedores de modelos a no quedarse nada. Desde mediados de 2025 hay dos versiones: la actual permite a Cursor guardar algunos datos para funciones como los agentes en la nube y las memorias, y la que ahora se llama Legacy no guarda nada. Si elegiste la más estricta, comprueba que sigue seleccionada.",{"q":531,"a":532},"¿Es segura la indexación del código?","La indexación envía trozos de tu proyecto a Cursor para convertirlos en embeddings, un resumen numérico que le permite encontrar el archivo correcto cuando haces una pregunta. Cursor dice que las rutas de los archivos se cifran antes de salir de tu máquina y que el código en sí nunca se guarda como texto legible, así que lo que queda en sus servidores es un mapa de tu proyecto. Los archivos de .gitignore y los archivos .env se omiten por defecto, y un archivo .cursorignore deja fuera del índice cualquier otra cosa. La salvedad es el terminal: Cursor documenta que el agente, cuando ejecuta un comando, puede leer un archivo que .cursorignore excluye.",{"q":534,"a":535},"¿Cursor tiene certificación SOC 2?","Cursor lista una atestación SOC 2 Tipo II en su página de seguridad, junto a ISO\u002FIEC 27001 e ISO\u002FIEC 42001. Un informe SOC 2 significa que un auditor externo comprobó que la empresa tiene controles sobre cómo maneja los datos que guarda. No dice nada sobre si el código que escribe Cursor es seguro, ni sobre la app que publicaste con él, que son las dos preguntas que preocupan a la mayoría de quienes escriben «es seguro cursor ai».",{"q":537,"a":538},"¿El código generado por IA es menos seguro que el que escribo yo?","La respuesta medida trata de los modelos, no de ti. Veracode pasa 80 tareas de programación por cada modelo importante, cada una con una forma segura y otra insegura de resolverla, y en su actualización de primavera de 2026 solo el 55 % de los resultados eran seguros mientras que más del 95 % compilaban. Lo que hay que retener es la brecha: el código pasa la prueba que tú haces, que es si funciona, y aproximadamente la mitad de las veces no tomó la decisión de seguridad que nadie comprueba por ti.",{"q":540,"a":541},"¿Es seguro usar Cursor para trabajos de clientes?","Depende de lo que diga el contrato del cliente sobre adónde puede ir su código. Cursor envía las partes relevantes de un proyecto a sus servidores, y de ahí a un proveedor de modelos, en cada petición; el Privacy Mode cambia lo que se conserva después, no si viaja. Si el contrato permite una herramienta en la nube bajo un acuerdo de retención cero de datos, el Privacy Mode es el ajuste que te lo da, y en un plan de equipo el administrador puede imponerlo para que nadie en el proyecto pueda apagarlo.","\u002Fblog\u002Fis-cursor-ai-safe\u002Fcard-800x500.png",[544,545,546,547,548,549,550,551,552,553],"es seguro cursor ai","es seguro cursor","cursor ai seguridad","cursor privacy mode","cursor entrena con mi código","cursor indexación de código privacidad","cursor soc 2","es seguro el código generado por ia","riesgos de seguridad de cursor","is cursor ai safe",{},true,"\u002Fblog\u002Fis-cursor-ai-safe","2026-09-16",{"title":5,"description":520},"blog\u002Fis-cursor-ai-safe",[561,562,563],"¿Es seguro Cursor AI? Como editor, es una herramienta en la nube corriente: tu código va a sus servidores para ser respondido, un interruptor decide qué se queda, y tiene una atestación SOC 2 Tipo II.","El código que escribe es una segunda pregunta. En la prueba de primavera de 2026 de Veracode, más de 150 modelos produjeron código que compilaba más del 95 % de las veces y era seguro el 55 % de las veces.","La app que publicaste es la tercera, y la única que un escaneo desde fuera puede responder. No podemos distinguir una app hecha con Cursor de cualquier otra, y ese es justamente el punto: nada del editor llega a lo que publicaste.","2026-09-21","q-9TjYzseoOqODV9f8pAwkZp_y4b143QBD_ZOFF2hxk",[567,574,580,585,591,597,603,609,610,615,621,627,633,639,645,651,657,663,669,675,681,687,693,699,705,711,717,723,729,735,741,747,753,759,765,770,775,781,787,793,798,804],{"path":568,"title":569,"description":570,"published":571,"category":572,"image":573,"draft":521},"\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":575,"title":576,"description":577,"published":578,"category":517,"image":579,"draft":521},"\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":581,"title":582,"description":583,"published":564,"category":517,"image":584,"draft":521},"\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.","\u002Fblog\u002Fis-lovable-safe\u002Fcard-800x500.png",{"path":586,"title":587,"description":588,"published":589,"category":517,"image":590,"draft":521},"\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":592,"title":593,"description":594,"published":595,"category":517,"image":596,"draft":521},"\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":598,"title":599,"description":600,"published":601,"category":517,"image":602,"draft":521},"\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":604,"title":605,"description":606,"published":607,"category":517,"image":608,"draft":521},"\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":556,"title":5,"description":520,"published":557,"category":517,"image":542,"draft":521},{"path":390,"title":611,"description":612,"published":613,"category":517,"image":614,"draft":521},"¿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":616,"title":617,"description":618,"published":619,"category":572,"image":620,"draft":521},"\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":622,"title":623,"description":624,"published":625,"category":572,"image":626,"draft":521},"\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":628,"title":629,"description":630,"published":631,"category":572,"image":632,"draft":521},"\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":634,"title":635,"description":636,"published":637,"category":517,"image":638,"draft":521},"\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":640,"title":641,"description":642,"published":643,"category":517,"image":644,"draft":521},"\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":646,"title":647,"description":648,"published":649,"category":517,"image":650,"draft":521},"\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":652,"title":653,"description":654,"published":655,"category":517,"image":656,"draft":521},"\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":658,"title":659,"description":660,"published":661,"category":517,"image":662,"draft":521},"\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":664,"title":665,"description":666,"published":667,"category":517,"image":668,"draft":521},"\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":670,"title":671,"description":672,"published":673,"category":517,"image":674,"draft":521},"\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":676,"title":677,"description":678,"published":679,"category":517,"image":680,"draft":521},"\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":682,"title":683,"description":684,"published":685,"category":517,"image":686,"draft":521},"\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":688,"title":689,"description":690,"published":691,"category":517,"image":692,"draft":521},"\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":694,"title":695,"description":696,"published":697,"category":572,"image":698,"draft":521},"\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":700,"title":701,"description":702,"published":703,"category":517,"image":704,"draft":521},"\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":706,"title":707,"description":708,"published":709,"category":572,"image":710,"draft":521},"\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":712,"title":713,"description":714,"published":715,"category":517,"image":716,"draft":521},"\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":718,"title":719,"description":720,"published":721,"category":517,"image":722,"draft":521},"\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":724,"title":725,"description":726,"published":727,"category":517,"image":728,"draft":521},"\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":730,"title":731,"description":732,"published":733,"category":517,"image":734,"draft":521},"\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":736,"title":737,"description":738,"published":739,"category":572,"image":740,"draft":521},"\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":742,"title":743,"description":744,"published":745,"category":572,"image":746,"draft":521},"\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":748,"title":749,"description":750,"published":751,"category":517,"image":752,"draft":521},"\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":754,"title":755,"description":756,"published":757,"category":517,"image":758,"draft":521},"\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":760,"title":761,"description":762,"published":763,"category":572,"image":764,"draft":521},"\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":375,"title":766,"description":767,"published":768,"category":517,"image":769,"draft":521},"¿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":771,"title":772,"description":773,"published":768,"category":517,"image":774,"draft":521},"\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":776,"title":777,"description":778,"published":779,"category":517,"image":780,"draft":521},"\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":782,"title":783,"description":784,"published":785,"category":572,"image":786,"draft":521},"\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":788,"title":789,"description":790,"published":791,"category":517,"image":792,"draft":521},"\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":794,"title":795,"description":796,"published":791,"category":572,"image":797,"draft":521},"\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":799,"title":800,"description":801,"published":802,"category":572,"image":803,"draft":521},"\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":805,"title":806,"description":807,"published":802,"category":517,"image":808,"draft":521},"\u002Fblog\u002Fwhich-api-keys-are-safe-in-your-frontend","Qué claves de API son seguras en el navegador y cuáles no","Tu clave anon de Supabase está pensada para ser pública. Tu clave service_role no, y se salta todas las reglas que pongas. Cómo distinguirlas.","\u002Fblog\u002Fwhich-api-keys-are-safe-in-your-frontend\u002Fcard-800x500.png",1790150954065]