{"id":86998,"date":"2026-05-19T12:36:47","date_gmt":"2026-05-19T17:36:47","guid":{"rendered":"https:\/\/niixer.com\/?p=86998"},"modified":"2026-05-28T16:24:44","modified_gmt":"2026-05-28T21:24:44","slug":"vibe-coding-con-ia","status":"publish","type":"post","link":"https:\/\/niixer.com\/index.php\/2026\/05\/19\/vibe-coding-con-ia\/","title":{"rendered":"Vibe Coding con inteligencia artificial: crea una app con Google AI Studio y auditala con OWASP TOP 10"},"content":{"rendered":"\n<h2 class=\"wp-block-heading\"><strong>01 \u00bfC\u00f3mo funciona el Vibe Coding?\u2014 La metodolog\u00eda para construir software con IA sin programar<\/strong><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">El <a href=\"https:\/\/niixer.com\/index.php\/2026\/04\/13\/vibe-coding-pagina-web-gratis-con-google-ai-studio-sin-saber-programar\/\"><strong>Vibe Coding con IA<\/strong> <\/a>es una forma de crear software donde t\u00fa describes lo que quieres en lenguaje natural y la IA genera el c\u00f3digo por ti. No reemplaza el pensamiento l\u00f3gico ni la capacidad de tomar decisiones, pero s\u00ed elimina la barrera de tener que dominar un lenguaje de programaci\u00f3n para materializar una idea.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">El t\u00e9rmino lo propuso <strong>Andrej Karpathy<\/strong> \u2014cofundador de OpenAI y ex director de IA en Tesla\u2014 en febrero de 2025. Se populariz\u00f3 tan r\u00e1pido que ese mismo mes fue incorporado al Diccionario Merriam-Webster.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">&#8220;Una t\u00e9cnica donde el programador describe el problema en pocas oraciones, la IA genera el software, y el rol humano pasa de escribir c\u00f3digo a guiar, probar y refinar lo que el modelo produce.&#8221;Wikipedia, 2025 \u2014 basado en la definici\u00f3n de Karpathy<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>\u00bfPor qu\u00e9 funciona?<\/strong><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">La clave est\u00e1 en que los modelos de lenguaje grandes (LLMs) actuales fueron entrenados con enormes cantidades de c\u00f3digo real. Cuando les describes una funci\u00f3n, un m\u00f3dulo o una arquitectura completa, el modelo puede generar c\u00f3digo funcional porque &#8220;ha visto&#8221; patrones similares millones de veces. No inventa: reconoce patrones y los adapta a tu descripci\u00f3n.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Pero hay una condici\u00f3n: <strong>la calidad del resultado depende directamente de la calidad de lo que describes<\/strong>. Un prompt vago produce c\u00f3digo vago. Un prompt preciso, con restricciones claras y formato de salida definido, produce c\u00f3digo estructurado y coherente.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Lo m\u00e1s importante:<\/strong> el <strong>Vibe Coding con inteligencia artificial<\/strong> no es &#8220;pedirle a la IA que haga todo&#8221;. Es saber qu\u00e9 quieres construir, dividirlo en partes, describir cada parte con precisi\u00f3n y revisar cr\u00edticamente lo que te devuelve. La IA genera; t\u00fa diriges.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>La herramienta: Google AI Studio<\/strong><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/aistudio.google.com\" target=\"_blank\" rel=\"noreferrer noopener\"><strong>Google AI Studio<\/strong><\/a> es la plataforma gratuita de Google para usar los modelos Gemini directamente desde el navegador. No necesitas instalar nada ni tener tarjeta de cr\u00e9dito, solo una cuenta de Google.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Para Vibe Coding tiene ventajas claras:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Ventana de contexto de hasta un mill\u00f3n de tokens:<\/strong> puedes mantener todo el contexto de un proyecto complejo en una sola sesi\u00f3n sin que el modelo &#8220;olvide&#8221; lo anterior.<\/li>\n\n\n\n<li><strong>Multimodal:<\/strong> puedes pasarle im\u00e1genes, PDFs o capturas de pantalla junto con tus prompts. Si tienes un dise\u00f1o en papel o un diagrama, puedes subirlo y la IA lo considera.<\/li>\n\n\n\n<li><strong>System Prompt:<\/strong> puedes definir instrucciones base que se aplican a toda la sesi\u00f3n, lo que da coherencia al c\u00f3digo generado en m\u00faltiples iteraciones.<\/li>\n\n\n\n<li><strong>Gratuito:<\/strong> acceso sin costo en todas las regiones disponibles, ideal para proyectos acad\u00e9micos y prototipos (Google Cloud, 2026).<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>C\u00f3mo estructurar un buen prompt para Vibe Coding con IA<\/strong><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Esta es la parte que m\u00e1s impacta en el resultado. Un prompt de <strong>Vibe Coding con inteligencia artificial<\/strong> bien construido tiene cinco elementos:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Rol:<\/strong> qu\u00e9 tipo de experto debe ser la IA en esta respuesta. <em>&#8220;Act\u00faa como un Backend Engineer Senior con experiencia en Node.js y APIs REST.&#8221;<\/em><\/li>\n\n\n\n<li><strong>Contexto:<\/strong> qu\u00e9 est\u00e1s construyendo y para qu\u00e9. Cuanto m\u00e1s espec\u00edfico, mejor.<\/li>\n\n\n\n<li><strong>Objetivo:<\/strong> qu\u00e9 resultado concreto esperas de este prompt. No &#8220;ay\u00fadame con el backend&#8221; sino &#8220;dise\u00f1a los endpoints REST del m\u00f3dulo de autenticaci\u00f3n con JWT y roles admin\/editor&#8221;.<\/li>\n\n\n\n<li><strong>Restricciones:<\/strong> lo que NO debe incluir. Esto es igual de importante que el objetivo. <em>&#8220;No uses Redis, no uses microservicios, no uses GraphQL.&#8221;<\/em><\/li>\n\n\n\n<li><strong>Formato de salida:<\/strong> c\u00f3mo quieres que entregue el resultado. \u00c1rbol de carpetas, tabla de endpoints, schema de Prisma, etc.<\/li>\n<\/ol>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Error com\u00fan:<\/strong> describir todo en un solo prompt gigante esperando que la IA genere la aplicaci\u00f3n completa de una vez. Funciona mejor dividir el proyecto en m\u00f3dulos y trabajar cada uno por separado, iterando hasta que quede bien antes de pasar al siguiente.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>El ciclo de trabajo real para el Vibe Coding con IA<\/strong><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>1 Define la idea con claridad antes de abrir AI Studio<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u00bfQu\u00e9 problema resuelve la app? \u00bfQui\u00e9n la usa? \u00bfQu\u00e9 hace en cada pantalla? Sin esta base, los prompts ser\u00e1n vagos y el c\u00f3digo tambi\u00e9n. Escribe un resumen de media p\u00e1gina antes de empezar.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>2 Configura el System Prompt en Google AI Studio<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Entra a <a href=\"https:\/\/aistudio.google.com\" target=\"_blank\" rel=\"noreferrer noopener\">aistudio.google.com<\/a>, selecciona Gemini y activa el System Prompt. Ah\u00ed define el contexto global del proyecto y las restricciones tecnol\u00f3gicas que aplican a toda la sesi\u00f3n.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"742\" src=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-526-1024x742.png\" alt=\"\" class=\"wp-image-87641\" srcset=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-526-1024x742.png 1024w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-526-300x217.png 300w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-526-768x557.png 768w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-526.png 1286w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><em>Nota.<\/em> Captura de pantalla del entorno de desarrollo inicial sin c\u00f3digo. Elaboraci\u00f3n propia a trav\u00e9s de Google IA Studio (2026)<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>3 Empieza por la arquitectura, no por el c\u00f3digo<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">El primer <a href=\"https:\/\/niixer.com\/index.php\/2026\/04\/13\/vibe-coding-la-revolucion-de-crear-apps-sin-codigo-caso-practico-de-inventario\/\">prompt <\/a>debe pedir la estructura general: carpetas, m\u00f3dulos, decisiones de stack, flujo de datos. Si la arquitectura est\u00e1 bien, el c\u00f3digo que venga despu\u00e9s encaja solo. Si est\u00e1 mal, cada m\u00f3dulo va a tener problemas.<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">Act\u00faa como un Software Architect. Estoy construyendo una calculadora web b\u00e1sica que suma, resta, multiplica y divide. Dame el \u00e1rbol de carpetas, los m\u00f3dulos principales y el flujo de datos. Stack: React + Vite + TailwindCSS. Sin backend, sin base de datos. Devuelve \u00e1rbol de carpetas + tabla de m\u00f3dulos.<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>4 Genera m\u00f3dulo por m\u00f3dulo y prueba cada uno<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Base de datos, autenticaci\u00f3n, APIs, frontend \u2014 cada uno en su propio prompt y su propio ciclo de revisi\u00f3n. Prueba que funcione antes de pasar al siguiente. Un error acumulado en el m\u00f3dulo de base de datos contamina todo lo que viene despu\u00e9s.<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">Act\u00faa como un Frontend Engineer con React. Ya tengo la arquitectura definida. Genera \u00fanicamente el componente Calculator.tsx con los botones num\u00e9ricos, los operadores y la pantalla que muestra el resultado. Solo useState, sin librer\u00edas externas. Devuelve solo el componente.<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>5 Cuando algo falla, describe el error con precisi\u00f3n<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">No digas &#8220;no funciona&#8221;. Di exactamente qu\u00e9 falla, en qu\u00e9 endpoint, con qu\u00e9 datos de prueba y qu\u00e9 devuelve. Cuanto m\u00e1s espec\u00edfico es el error que le describes a la IA, m\u00e1s precisa es la correcci\u00f3n que genera.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>6 Integra los m\u00f3dulos y despliega<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Cuando cada parte funciona por separado, int\u00e9gralas. Para desplegar en Render: crea un Web Service, conecta el repositorio, define el build command y el start command, agrega la base de datos <a href=\"https:\/\/www.postgresql.org\/\">PostgreSQL <\/a>y configura las variables de entorno. En menos de 15 minutos est\u00e1 en producci\u00f3n.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>VIDEO DE COMO CREAR APPS EN IA STUDIO<\/strong><\/p>\n\n\n\n<figure class=\"wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio\"><div class=\"wp-block-embed__wrapper\">\n<iframe loading=\"lazy\" title=\"C\u00f3mo crear apps con Google AI Studio (Clip Creator)ai studio google\" width=\"800\" height=\"450\" src=\"https:\/\/www.youtube.com\/embed\/9LprKf80iGQ?feature=oembed\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" allowfullscreen><\/iframe>\n<\/div><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Aguilar, J. M. (2025, 2 de noviembre). <em>C\u00f3mo crear apps con Google AI Studio (Clip Creator)<\/em> [Video]. YouTube. <a href=\"https:\/\/youtu.be\/9LprKf80iGQ\">https:\/\/youtu.be\/9LprKf80iGQ<\/a><\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>02 El proyecto que construimos\u2014 Una plataforma SaaS de redes sociales generada con IA<\/strong><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Para aplicar el <strong>Vibe Coding con inteligencia artificial<\/strong> en un caso real, construimos una plataforma de gesti\u00f3n de redes sociales para concesionarios de motos. Incluye calendario de contenido con drag and drop, generador de copies e ideas con IA, dashboard de m\u00e9tricas y gesti\u00f3n de campa\u00f1as publicitarias para Instagram, TikTok, YouTube, Facebook y X\/Twitter.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Puedes verla aqu\u00ed: <a href=\"https:\/\/calendario-redes-sociales.onrender.com\/\" target=\"_blank\" rel=\"noreferrer noopener\"><strong>calendario-redes-sociales.onrender.com<\/strong><\/a><br>C\u00f3digo fuente: <a href=\"https:\/\/github.com\/FernandoMartinez018\/calendario-redes-sociales-hacking-etico\" target=\"_blank\" rel=\"noreferrer noopener\">github.com\/FernandoMartinez018\/calendario-redes-sociales-hacking-etico<\/a><\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>El stack que definimos desde el primer prompt<\/strong><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">La restricci\u00f3n m\u00e1s importante fue la simplicidad: un solo proyecto, un solo <a href=\"https:\/\/niixer.com\/?s=servidor\">servidor<\/a>, sin microservicios ni Redis ni colas. Todo en un monolito desplegable en Render.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>React 19 + Vite + TailwindCSS + shadcn\/ui<\/li>\n\n\n\n<li>Node.js 20 + Express 4 + TypeScript<\/li>\n\n\n\n<li>PostgreSQL + Prisma ORM<\/li>\n\n\n\n<li>OpenAI API<\/li>\n\n\n\n<li>Cloudinary<\/li>\n\n\n\n<li>JWT + bcrypt + roles<\/li>\n\n\n\n<li>Render (1 Web Service)<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Ejemplo de promps<\/strong><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">En lugar de un prompt gigante, dividimos el proyecto en cinco prompts especializados. Cada uno gener\u00f3 una <a href=\"https:\/\/dle.rae.es\/capa\">capa <\/a>completa del sistema. As\u00ed funciona el <strong>Vibe Coding con IA<\/strong> cuando se estructura bien: m\u00f3dulo a m\u00f3dulo, con precisi\u00f3n.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Prompt #1 \u00b7 Arquitectura general<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">Prompt #1 \u2014 Arquitectura General Monol\u00edtica (Node.js + PostgreSQL + Render)\nROL\n\nAct\u00faa como un Software Architect Senior con 15 a\u00f1os de experiencia construyendo aplicaciones SaaS monol\u00edticas modernas con Node.js, PostgreSQL y despliegues simplificados en Render. Especialista en arquitecturas fullstack simples, mantenibles y optimizadas para desarrollo r\u00e1pido mediante vibe coding y AI-assisted development.\n\nCONTEXTO\n\nEstoy construyendo una plataforma SaaS de gesti\u00f3n de redes sociales enfocada en concesionarios y venta de motos.\n\nLa aplicaci\u00f3n debe permitir:\n\nGesti\u00f3n de calendario de contenido para:\nInstagram\nTikTok\nYouTube\nFacebook\nX\/Twitter\nCreaci\u00f3n y programaci\u00f3n de:\nreels\nhistorias\nposts\nshorts\ncampa\u00f1as ads\nGeneraci\u00f3n autom\u00e1tica de:\ncopies\nhashtags\nt\u00edtulos\ncaptions\nprompts creativos\nideas de campa\u00f1as\nGeneraci\u00f3n autom\u00e1tica de 20 publicaciones mensuales.\nDashboard de m\u00e9tricas:\nlikes\nengagement\nreposts\nshares\nfollowers\nalcance\nCTR\nGesti\u00f3n de campa\u00f1as:\nMeta Ads\nTikTok Ads\nGoogle Ads\nIA interna que:\nrecopila prompts,\ngenera copies,\ngenera ideas visuales,\nrecomienda horarios.\n\nLa aplicaci\u00f3n debe ser SIMPLE.\n\nNO quiero:\n\nmicroservicios,\ncolas,\nRedis,\nKafka,\narquitectura distribuida,\ncomplejidad innecesaria.\n\nTODO debe vivir:\n\nen un \u00fanico proyecto Node.js,\ncon frontend y backend juntos,\nusando PostgreSQL,\ndesplegable f\u00e1cilmente en Render.\nOBJETIVO\n\nDise\u00f1ar una arquitectura fullstack monol\u00edtica simple, moderna y escalable moderadamente, optimizada para:\n\nvelocidad de desarrollo,\nmantenimiento sencillo,\nbajo costo,\ndespliegue simple,\ny desarrollo mediante vibe coding.\nREQUERIMIENTOS DE ENTRADA\n\nLa aplicaci\u00f3n debe incluir:\n\nM\u00f3dulos principales\nAutenticaci\u00f3n\nDashboard\nCalendario Social\nGenerador IA\nGesti\u00f3n de publicaciones\nGesti\u00f3n de campa\u00f1as Ads\nAnalytics\nConfiguraci\u00f3n\nBiblioteca multimedia\nGesti\u00f3n de prompts IA\nFuncionalidades\nProgramaci\u00f3n de publicaciones\nGeneraci\u00f3n autom\u00e1tica de copies\nGeneraci\u00f3n de hashtags\nRecomendaci\u00f3n de horarios\nDashboard de m\u00e9tricas\nSubida de im\u00e1genes\/videos\nCalendario drag and drop\nGeneraci\u00f3n autom\u00e1tica de contenido mensual\nRESTRICCIONES (NO NEGOCIABLES)\nNO usar microservicios.\nNO usar Redis.\nNO usar colas\/event brokers.\nNO usar Docker obligatorio.\nNO usar Kubernetes.\nNO usar arquitectura hexagonal compleja.\nNO usar CQRS.\nNO usar GraphQL.\nNO usar m\u00faltiples repositorios.\nDebe ser un \u00fanico proyecto fullstack.\nDebe poder desplegarse en Render con:\nun \u00fanico Web Service\nuna base PostgreSQL\nDebe ser entendible para un desarrollador mid-level.\nDebe priorizar simplicidad sobre hiper-escalabilidad.\nSTACK FORZADO\nFrontend\nReact 19\nTypeScript\nVite\nTailwindCSS\nshadcn\/ui\nBackend\nNode.js 20\nExpress 4\nTypeScript\nBase de datos\nPostgreSQL\nORM\nPrisma ORM\nIA\nOpenAI API\nDeploy\nRender\nCharts\nRecharts\nAuth\nJWT simple con bcrypt\nUploads\nCloudinary\nFORMATO DE SALIDA (estricto)\n1. Arquitectura General\n\nExplicar:\n\npor qu\u00e9 un monolito es correcto,\nc\u00f3mo convivir\u00e1n frontend y backend,\nflujo de datos,\nestructura simple del proyecto.\n2. Diagrama de capas ASCII\n\nMostrar:\n\nBrowser\n\u2193\nReact Frontend\n\u2193\nExpress API\n\u2193\nServices\n\u2193\nPrisma ORM\n\u2193\nPostgreSQL\n\nY conexiones externas:\n\nOpenAI\nCloudinary\nAPIs sociales\n\n3. Estructura de carpetas completa\n\nGenerar \u00e1rbol completo:\n\nfrontend\nbackend\nshared\nprisma\nuploads\nscripts\n\nCon explicaci\u00f3n carpeta por carpeta.\n\n4. M\u00f3dulos del sistema\n\nTabla:\n\n| M\u00f3dulo | Responsabilidad | Tablas | APIs externas |\n\n5. Modelo de autenticaci\u00f3n\n\nExplicar:\n\nJWT\nrefresh token\nbcrypt\nmiddleware auth\nroles:\nadmin\neditor\n6. Arquitectura del calendario social\n\nExplicar:\n\ndrag and drop\nprogramaci\u00f3n\nestados:\ndraft\nscheduled\npublished\nfailed\n\nModelo de publicaci\u00f3n.\n\n7. Arquitectura IA\n\nExplicar:\n\ngeneraci\u00f3n de copies\nprompts\nrecomendaciones\ngeneraci\u00f3n de hashtags\nreutilizaci\u00f3n de prompts\nhistorial IA\n8. Dashboard y analytics\n\nExplicar:\n\nm\u00e9tricas\nKPIs\ngr\u00e1ficos\nagregaciones SQL\nrendimiento sin Redis\n9. Estrategia de despliegue en Render\n\nExplicar:\n\nbuild command\nstart command\nvariables de entorno\nPostgreSQL\nalmacenamiento multimedia\n10. Trade-offs arquitect\u00f3nicos\n\nM\u00ednimo 10 trade-offs.\n\nEjemplo:\n\nDecisi\u00f3n\n\nMonolito Node.js\n\nVentaja\n\nDesarrollo r\u00e1pido.\n\nDesventaja\n\nEscalabilidad horizontal limitada.\n\n11. Roadmap t\u00e9cnico\n\nFase 1:\n\nMVP\n\nFase 2:\n\nIA avanzada\n\nFase 3:\n\nautomatizaciones\nCRITERIOS DE ACEPTACI\u00d3N\n\nLa respuesta solo es v\u00e1lida si:\n\nNO usa microservicios.\nNO usa Redis.\nTODO cabe en Render.\nFrontend y backend viven juntos.\nPrisma es el \u00fanico ORM.\nPostgreSQL es la \u00fanica base de datos.\nExiste una arquitectura clara para:\ncalendario,\nIA,\nm\u00e9tricas,\npublicaciones,\ncampa\u00f1as ads.\nTodo est\u00e1 optimizado para simplicidad.<\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n<div class=\"_3d-flip-book  fb3d-fullscreen-mode full-size\" data-id=\"89227\" data-mode=\"fullscreen\" data-title=\"false\" data-template=\"short-white-book-view\" data-lightbox=\"dark-shadow\" data-urlparam=\"fb3d-page\" data-page-n=\"0\" data-pdf=\"\" data-tax=\"null\" data-thumbnail=\"\" data-cols=\"3\" data-book-template=\"default\" data-trigger=\"\"><\/div><script type=\"text\/javascript\">window.FB3D_CLIENT_DATA = window.FB3D_CLIENT_DATA || [];FB3D_CLIENT_DATA.push('eyJwb3N0cyI6eyI4OTIyNyI6eyJJRCI6ODkyMjcsInRpdGxlIjoiVklCRSBDT0RJTkcgUFJPTVBTIiwidHlwZSI6InBkZiIsInJlYWR5X2Z1bmN0aW9uIjoiIiwiYm9va19zdHlsZSI6ImZsYXQiLCJib29rX3RlbXBsYXRlIjoibm9uZSIsIm91dGxpbmUiOltdLCJkYXRhIjp7InBvc3RfSUQiOiI4OTIyOSIsImd1aWQiOiJodHRwczpcL1wvbmlpeGVyLmNvbVwvd3AtY29udGVudFwvdXBsb2Fkc1wvMjAyNlwvMDVcL3Byb21wdHMtaGFja2luZy1ldGljby0xLTEucGRmIiwicGRmX3BhZ2VzIjoiMTciLCJwYWdlc19jdXN0b21pemF0aW9uIjoibm9uZSJ9LCJ0aHVtYm5haWwiOnsiZGF0YSI6eyJwb3N0X0lEIjoiMCJ9LCJ0eXBlIjoiYXV0byJ9LCJwcm9wcyI6eyJiYWNrZ3JvdW5kQ29sb3IiOiJhdXRvIiwiYmFja2dyb3VuZEltYWdlIjoiYXV0byIsImJhY2tncm91bmRTdHlsZSI6ImF1dG8iLCJoaWdobGlnaHRMaW5rcyI6ImF1dG8iLCJsaWdodGluZyI6ImF1dG8iLCJzaW5nbGVQYWdlTW9kZSI6ImF1dG8iLCJjYWNoZWRQYWdlcyI6ImF1dG8iLCJyZW5kZXJJbmFjdGl2ZVBhZ2VzIjoiYXV0byIsInJlbmRlckluYWN0aXZlUGFnZXNPbk1vYmlsZSI6ImF1dG8iLCJyZW5kZXJXaGlsZUZsaXBwaW5nIjoiYXV0byIsInByZWxvYWRQYWdlcyI6ImF1dG8iLCJhdXRvUGxheUR1cmF0aW9uIjoiYXV0byIsInJ0bCI6ImF1dG8iLCJpbnRlcmFjdGl2ZUNvcm5lcnMiOiJhdXRvIiwibWF4RGVwdGgiOiJhdXRvIiwic2hlZXQiOnsic3RhcnRWZWxvY2l0eSI6ImF1dG8iLCJ3YXZlIjoiYXV0byIsInNoYXBlIjoiYXV0byIsIndpZHRoVGV4ZWxzIjoiYXV0byIsImNvbG9yIjoiYXV0byIsInNpZGUiOiJhdXRvIiwic3RyZXRjaEltYWdlcyI6ImF1dG8iLCJjb3JuZXJEZXZpYXRpb24iOiJhdXRvIiwiZmxleGliaWxpdHkiOiJhdXRvIiwiZmxleGlibGVDb3JuZXIiOiJhdXRvIiwiYmVuZGluZyI6ImF1dG8iLCJoZWlnaHRUZXhlbHMiOiJhdXRvIn0sImNvdmVyIjp7IndhdmUiOiJhdXRvIiwiY29sb3IiOiJhdXRvIiwic2lkZSI6ImF1dG8iLCJzdHJldGNoSW1hZ2VzIjoiYXV0byIsImJpbmRlclRleHR1cmUiOiJhdXRvIiwiZGVwdGgiOiJhdXRvIiwicGFkZGluZyI6ImF1dG8iLCJzdGFydFZlbG9jaXR5IjoiYXV0byIsImZsZXhpYmlsaXR5IjoiYXV0byIsImZsZXhpYmxlQ29ybmVyIjoiYXV0byIsImJlbmRpbmciOiJhdXRvIiwid2lkdGhUZXhlbHMiOiJhdXRvIiwiaGVpZ2h0VGV4ZWxzIjoiYXV0byIsIm1hc3MiOiJhdXRvIiwic2hhcGUiOiJhdXRvIn0sInBhZ2UiOnsid2F2ZSI6ImF1dG8iLCJjb2xvciI6ImF1dG8iLCJzaWRlIjoiYXV0byIsInN0cmV0Y2hJbWFnZXMiOiJhdXRvIiwiZGVwdGgiOiJhdXRvIiwic3RhcnRWZWxvY2l0eSI6ImF1dG8iLCJmbGV4aWJpbGl0eSI6ImF1dG8iLCJmbGV4aWJsZUNvcm5lciI6ImF1dG8iLCJiZW5kaW5nIjoiYXV0byIsIndpZHRoVGV4ZWxzIjoiYXV0byIsImhlaWdodFRleGVscyI6ImF1dG8iLCJtYXNzIjoiYXV0byIsInNoYXBlIjoiYXV0byJ9LCJoZWlnaHQiOiJhdXRvIiwid2lkdGgiOiJhdXRvIiwiZ3Jhdml0eSI6ImF1dG8iLCJwYWdlc0ZvclByZWRpY3RpbmciOiJhdXRvIn0sImNvbnRyb2xQcm9wcyI6eyJhY3Rpb25zIjp7ImNtZFRvYyI6eyJlbmFibGVkIjoiYXV0byIsImVuYWJsZWRJbk5hcnJvdyI6ImF1dG8iLCJhY3RpdmUiOiJhdXRvIiwiZGVmYXVsdFRhYiI6ImF1dG8ifSwiY21kQXV0b1BsYXkiOnsiZW5hYmxlZCI6ImF1dG8iLCJlbmFibGVkSW5OYXJyb3ciOiJhdXRvIiwiYWN0aXZlIjoiYXV0byJ9LCJjbWRTYXZlIjp7ImVuYWJsZWQiOiJhdXRvIiwiZW5hYmxlZEluTmFycm93IjoiYXV0byJ9LCJjbWRQcmludCI6eyJlbmFibGVkIjoiYXV0byIsImVuYWJsZWRJbk5hcnJvdyI6ImF1dG8ifSwiY21kU2luZ2xlUGFnZSI6eyJlbmFibGVkIjoiYXV0byIsImVuYWJsZWRJbk5hcnJvdyI6ImF1dG8iLCJhY3RpdmUiOiJhdXRvIiwiYWN0aXZlRm9yTW9iaWxlIjoiYXV0byJ9LCJ3aWRUb29sYmFyIjp7ImVuYWJsZWQiOiJhdXRvIiwiZW5hYmxlZEluTmFycm93IjoiYXV0byJ9fX0sImF1dG9UaHVtYm5haWwiOiJodHRwczpcL1wvbmlpeGVyLmNvbVwvd3AtY29udGVudFwvdXBsb2Fkc1wvM2QtZmxpcC1ib29rXC9hdXRvLXRodW1ibmFpbHNcLzg5MjI3LnBuZyIsInBvc3RfbmFtZSI6InZpYmUtY29kaW5nLXByb21wcyIsInBvc3RfdHlwZSI6IjNkLWZsaXAtYm9vayJ9fSwicGFnZXMiOltdLCJmaXJzdFBhZ2VzIjpbXX0=');window.FB3D_CLIENT_LOCALE && FB3D_CLIENT_LOCALE.render && FB3D_CLIENT_LOCALE.render();<\/script>\n\n\n\n<h2 class=\"wp-block-heading\">Aplicacion<\/h2>\n\n\n\nHTML\n<iframe loading=\"lazy\" src=\"https:\/\/calendario-redes-sociales.onrender.com\" width=\"100%\" height=\"650px\" frameborder=\"0\" style=\"border-radius: 10px; box-shadow: 0px 4px 10px rgba(0,0,0,0.2);\"><\/iframe>\n\n\n\n<p class=\"wp-block-paragraph\">URL: https:\/\/calendario-redes-sociales.onrender.com\/<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>03<\/strong> <strong>Pruebas de seguridad: OWASP Top 10<\/strong><\/h2>\n\n\n\n<h2 class=\"wp-block-heading\">Por qu\u00e9 hacerle pruebas de seguridad al c\u00f3digo generado por IA<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Seg\u00fan daily.dev (2026), <strong>hasta el 45% del c\u00f3digo generado por IA contiene vulnerabilidades de seguridad<\/strong> que no son evidentes a simple vista. La IA incorpora los <a href=\"https:\/\/es.wikipedia.org\/wiki\/Patr%C3%B3n_(estructura)\">patrones <\/a>que conoce, pero no siempre aplica las mejores pr\u00e1cticas de seguridad a menos que los prompts las especifiquen expl\u00edcitamente. Por eso, despu\u00e9s de construir con <strong>Vibe Coding con<\/strong> <strong>IA<\/strong>, la siguiente pregunta obligatoria es: <em>\u00bfqu\u00e9 tan seguro qued\u00f3?<\/em><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">El marco que usamos para responderla fue el <strong>OWASP Top 10 \u2013 2021<\/strong>: las diez categor\u00edas de vulnerabilidades m\u00e1s cr\u00edticas en aplicaciones web, definidas por la Open Web Application Security Project. Es el est\u00e1ndar de referencia en<a href=\"https:\/\/niixer.com\/index.php\/2026\/05\/05\/que-tan-segura-es-tu-web-una-travesia-de-hacking-etico-por-pokemon-wuaze-com\/\"> hacking \u00e9tico<\/a> y auditor\u00eda de aplicaciones web.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Las herramientas del pen testing<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>OWASP ZAP:<\/strong> herramienta gratuita de an\u00e1lisis autom\u00e1tico de vulnerabilidades. Lanza payloads sobre todos los endpoints y formularios detectados y reporta lo que encuentra.<\/li>\n\n\n\n<li><strong>curl desde PowerShell:<\/strong> para pruebas manuales de conectividad y an\u00e1lisis de headers HTTP.<\/li>\n\n\n\n<li><strong>DevTools del navegador:<\/strong> inspecci\u00f3n de tr\u00e1fico, respuestas del servidor y comportamiento de la app en tiempo real.<\/li>\n\n\n\n<li><strong>An\u00e1lisis manual:<\/strong> algunos <a href=\"https:\/\/dle.rae.es\/test\">tests <\/a>no se pueden automatizar. El comportamiento del login ante intentos fallidos, por ejemplo, requiere prueba directa.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Escaneo de red<\/strong><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Antes de las pruebas OWASP, hicimos un reconocimiento b\u00e1sico de la infraestructura con cuatro herramientas est\u00e1ndar.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Ping e ICMP:<\/strong> El servidor respondi\u00f3 los 4 paquetes con 0% de p\u00e9rdida. El hostname revel\u00f3 que el origen est\u00e1 en Google Cloud Platform regi\u00f3n us-west1 (Oregon) y que el tr\u00e1fico pasa por Cloudflare CDN antes de llegar al cliente.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"259\" src=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-622-1024x259.png\" alt=\"\" class=\"wp-image-87814\" srcset=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-622-1024x259.png 1024w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-622-300x76.png 300w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-622-768x195.png 768w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-622.png 1318w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Traceroute:<\/strong> La ruta completa se complet\u00f3 en 9 saltos: red local con salida AWS \u2192 ISP colombiano \u2192 enlace internacional hacia Florida \u2192 red de Cloudflare \u2192 nodo respondedor. Latencia estable de 75 ms desde Colombia.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"316\" src=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-623-1024x316.png\" alt=\"\" class=\"wp-image-87815\" srcset=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-623-1024x316.png 1024w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-623-300x93.png 300w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-623-768x237.png 768w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-623.png 1297w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>nslookup<\/strong>: El dominio resuelve correctamente mediante DNS p\u00fablico de Google (8.8.8.8) hacia infraestructura de Render y Cloudflare. La consulta devuelve dos direcciones IP p\u00fablicas (<code>216.24.57.7<\/code> y <code>216.24.57.251<\/code>) asociadas al balanceo y protecci\u00f3n CDN de Cloudflare. El servicio apunta al nodo <code>gcp-us-west1-1.origin.onrender.com<\/code>, indicando despliegue en Google Cloud regi\u00f3n US West. Resoluci\u00f3n DNS estable y sin errores<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"604\" height=\"187\" src=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-991.png\" alt=\"\" class=\"wp-image-88886\" srcset=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-991.png 604w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-991-300x93.png 300w\" sizes=\"auto, (max-width: 604px) 100vw, 604px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>NSLookup avanzado:<\/strong> La consulta DNS muestra que el dominio <code>calendario-redes-sociales.onrender.com<\/code> utiliza registros CNAME encadenados hacia infraestructura de Render y distribuci\u00f3n CDN de Cloudflare. El dominio principal apunta a <code>gcp-us-west1-1.origin.onrender.com<\/code>, que posteriormente resuelve hacia <code>gcp-us-west1-1.origin.onrender.com.cdn.cloudflare.net<\/code>. La respuesta confirma que Cloudflare act\u00faa como proveedor DNS y capa de protecci\u00f3n\/CDN, con configuraci\u00f3n SOA activa, TTL de 30 minutos y sincronizaci\u00f3n DNS estable sin errores de resoluci\u00f3n.<br><\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"238\" src=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-992-1024x238.png\" alt=\"\" class=\"wp-image-88889\" srcset=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-992-1024x238.png 1024w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-992-300x70.png 300w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-992-768x179.png 768w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-992.png 1035w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>WHOIS y DNS:<\/strong> El dominio apunta a dos IPs de Cloudflare (216.24.57.7 y 216.24.57.251) mediante registros A. No tiene registros MX, es decir, no tiene correo configurado. El certificado SSL es v\u00e1lido, emitido por Google, cubre <code>*.onrender.com<\/code> y expira el 26 de junio de 2026.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"693\" height=\"403\" src=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-881.png\" alt=\"\" class=\"wp-image-88653\" srcset=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-881.png 693w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-881-300x174.png 300w\" sizes=\"auto, (max-width: 693px) 100vw, 693px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>SSL:<\/strong> Para validar el cifrado de forma m\u00e1s exhaustiva, se realiz\u00f3 un an\u00e1lisis con <strong>SSL Labs<\/strong> sobre los servidores de la aplicaci\u00f3n. Los resultados confirmaron calificaciones de <strong>A<\/strong> y <strong>A+<\/strong> en los dos servidores evaluados (IPs 216.24.57.251 y 216.24.57.7, prueba del 19 de mayo de 2026), con puntajes superiores a 85\/100 en Certificate, Protocol Support, Key Exchange y Cipher Strength. Esto confirma que la implementaci\u00f3n HTTPS generada por el proceso de <strong>Vibe Coding con inteligencia artificial<\/strong> cumple con est\u00e1ndares de seguridad de transporte de nivel profesional, sin intervenci\u00f3n manual en la configuraci\u00f3n TLS.<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"798\" height=\"870\" src=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-989.png\" alt=\"\" class=\"wp-image-88875\" style=\"aspect-ratio:0.9172512634834427;width:522px;height:auto\" srcset=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-989.png 798w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-989-275x300.png 275w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-989-768x837.png 768w\" sizes=\"auto, (max-width: 798px) 100vw, 798px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"933\" height=\"170\" src=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-884.png\" alt=\"\" class=\"wp-image-88657\" srcset=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-884.png 933w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-884-300x55.png 300w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-884-768x140.png 768w\" sizes=\"auto, (max-width: 933px) 100vw, 933px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"888\" height=\"281\" src=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-885.png\" alt=\"\" class=\"wp-image-88658\" srcset=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-885.png 888w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-885-300x95.png 300w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-885-768x243.png 768w\" sizes=\"auto, (max-width: 888px) 100vw, 888px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"699\" height=\"589\" src=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-990.png\" alt=\"\" class=\"wp-image-88878\" srcset=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-990.png 699w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-990-300x253.png 300w\" sizes=\"auto, (max-width: 699px) 100vw, 699px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Nmap:<\/strong> El an\u00e1lisis de servicios expuestos identifica puertos web est\u00e1ndar (<code>80<\/code> HTTP y <code>443<\/code> HTTPS) junto con puertos alternativos (<code>8080<\/code> y <code>8443<\/code>) utilizados com\u00fanmente para aplicaciones web, APIs o paneles administrativos. Tambi\u00e9n se detecta el puerto <code>5060<\/code> asociado al protocolo SIP\/VoIP y el puerto <code>2000<\/code> identificado como <code>Cisco SCCP<\/code>, utilizado en servicios de comunicaci\u00f3n IP. El puerto <code>113<\/code> (<code>ident<\/code>) aparece cerrado. La exposici\u00f3n de m\u00faltiples servicios indica un entorno con aplicaciones web activas y posibles servicios de comunicaci\u00f3n o backend desplegados p\u00fablicamente<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"422\" src=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-624-1024x422.png\" alt=\"\" class=\"wp-image-87816\" srcset=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-624-1024x422.png 1024w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-624-300x124.png 300w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-624-768x317.png 768w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-624.png 1360w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Las 10 categor\u00edas y c\u00f3mo testear cada una<\/h2>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>C\u00f3digo<\/th><th>Categor\u00eda<\/th><th>Qu\u00e9 se busca<\/th><th>Herramienta<\/th><\/tr><\/thead><tbody><tr><td>A01<\/td><td>Broken Access Control<\/td><td>Acceso a recursos sin permisos<\/td><td>Manual \/ ZAP<\/td><\/tr><tr><td>A02<\/td><td>Cryptographic Failures<\/td><td>Tr\u00e1fico sin cifrar, datos expuestos<\/td><td>curl \/ ZAP<\/td><\/tr><tr><td>A03<\/td><td>Injection<\/td><td>SQL Injection, XSS, Command Injection<\/td><td>ZAP Active Scan<\/td><\/tr><tr><td>A04<\/td><td>Insecure Design<\/td><td>Fallas de dise\u00f1o como fuerza bruta posible<\/td><td>Manual<\/td><\/tr><tr><td>A05<\/td><td>Security Misconfiguration<\/td><td>Headers HTTP de seguridad ausentes<\/td><td>ZAP \/ curl<\/td><\/tr><tr><td>A06<\/td><td>Vulnerable Components<\/td><td>Stack expuesto, versiones con CVEs<\/td><td>ZAP \/ DevTools<\/td><\/tr><tr><td>A07<\/td><td>Authentication Failures<\/td><td>XSS en login, sesiones d\u00e9biles<\/td><td>Manual \/ ZAP<\/td><\/tr><tr><td>A08<\/td><td>Integrity Failures<\/td><td>Recursos sin SRI, dependencias inseguras<\/td><td>DevTools \/ ZAP<\/td><\/tr><tr><td>A09<\/td><td>Logging Failures<\/td><td>Errores que exponen info interna<\/td><td>Manual \/ ZAP<\/td><\/tr><tr><td>A10<\/td><td>Server-Side Request Forgery<\/td><td>Par\u00e1metros que aceptan URLs arbitrarias<\/td><td>Manual \/ ZAP<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Resultados: qu\u00e9 encontramos en nuestra app<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">A01 \u00b7 Broken Access Control<\/h3>\n\n\n\n<h4 class=\"wp-block-heading\">Sin vulnerabilidad<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">Intentamos acceder directamente al endpoint <code>\/wp-json\/wp\/v2\/users<\/code> para enumerar usuarios. Render bloque\u00f3 el acceso correctamente. La app no est\u00e1 sobre WordPress, y los controles de acceso del servidor funcionan.Herramienta: navegador \u00b7 acceso manual<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"533\" src=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-248-1024x533.png\" alt=\"\" class=\"wp-image-87194\" srcset=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-248-1024x533.png 1024w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-248-300x156.png 300w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-248-768x399.png 768w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-248-1536x799.png 1536w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-248.png 1911w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">A02 \u00b7 Cryptographic Failures<\/h3>\n\n\n\n<h4 class=\"wp-block-heading\">HTTPS correcto<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">El sitio usa TLS 1.3 y redirige autom\u00e1ticamente desde HTTP. No encontramos datos sensibles en texto plano en ninguna respuesta.Herramienta: curl (PowerShell)<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"># Test b\u00e1sico de cifrado<br>curl -v http:\/\/calendario-redes-sociales.onrender.com\/<br>\u2192 301 Moved Permanently \u2192 redirige a HTTPS \u2713<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">curl -v https:\/\/calendario-redes-sociales.onrender.com\/<br>\u2192 200 OK \u00b7 TLS 1.3 \u00b7 Certificado v\u00e1lido \u2713<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"368\" src=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-249-1024x368.png\" alt=\"\" class=\"wp-image-87195\" srcset=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-249-1024x368.png 1024w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-249-300x108.png 300w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-249-768x276.png 768w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-249-1536x553.png 1536w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-249.png 1898w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">A03 \u00b7 Injection<\/h3>\n\n\n\n<h4 class=\"wp-block-heading\">Riesgo bajo \u2014 Prisma ORM mitiga SQL Injection<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">OWASP ZAP lanz\u00f3 payloads de SQL Injection, XSS y Command Injection sobre todos los formularios. Prisma ORM parametriza autom\u00e1ticamente todas las consultas, eliminando el riesgo de SQL Injection cl\u00e1sico. ZAP detect\u00f3 que algunos mensajes de error devolv\u00edan m\u00e1s informaci\u00f3n del sistema de lo recomendable.Herramienta: OWASP ZAP \u00b7 Active Scan<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"524\" src=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-250-1024x524.png\" alt=\"\" class=\"wp-image-87197\" srcset=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-250-1024x524.png 1024w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-250-300x153.png 300w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-250-768x393.png 768w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-250-1536x785.png 1536w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-250.png 1913w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">A04 \u00b7 Insecure Design<\/h3>\n\n\n\n<h4 class=\"wp-block-heading\">Vulnerabilidad encontrada El login no bloquea intentos fallidos<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">Probamos el formulario de login con m\u00faltiples credenciales incorrectas seguidas. La app no bloque\u00f3 al usuario, no mostr\u00f3 CAPTCHA y no agreg\u00f3 ninguna demora. Esto permite automatizar un ataque de fuerza bruta sin fricci\u00f3n:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Sin l\u00edmite de intentos por IP o por cuenta<\/li>\n\n\n\n<li>Sin timeout entre intentos fallidos<\/li>\n\n\n\n<li>Sin notificaci\u00f3n al usuario sobre actividad sospechosa<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Herramienta: an\u00e1lisis manual \u00b7 navegador<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"528\" src=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-251-1024x528.png\" alt=\"\" class=\"wp-image-87198\" srcset=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-251-1024x528.png 1024w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-251-300x155.png 300w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-251-768x396.png 768w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-251-1536x792.png 1536w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-251.png 1910w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">A05 \u00b7 Security Misconfiguration<\/h3>\n\n\n\n<h4 class=\"wp-block-heading\">Headers de seguridad incompletos<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">OWASP ZAP detect\u00f3 ausencia de headers HTTP cr\u00edticos:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Content-Security-Policy:<\/strong> no presente \u2192 facilita XSS al permitir cargar recursos externos sin restricci\u00f3n.<\/li>\n\n\n\n<li><strong>X-Frame-Options:<\/strong> ausente \u2192 la app puede embeberse en un iframe para clickjacking.<\/li>\n\n\n\n<li><strong>Referrer-Policy y Permissions-Policy:<\/strong> no configurados.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Solo el header <code>Strict-Transport-Security (HSTS)<\/code> estaba activo, activado autom\u00e1ticamente por Render.Herramienta: OWASP ZAP \u00b7 revisi\u00f3n de headers HTTP<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"523\" src=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-252-1024x523.png\" alt=\"\" class=\"wp-image-87199\" srcset=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-252-1024x523.png 1024w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-252-300x153.png 300w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-252-768x393.png 768w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-252-1536x785.png 1536w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-252.png 1915w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">A06 \u00b7 Vulnerable Components<\/h3>\n\n\n\n<h4 class=\"wp-block-heading\">Expone el stack tecnol\u00f3gico<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">El header <code>X-Powered-By<\/code> y algunos mensajes de error revelaban el framework y versiones usadas. Esto le da a un atacante informaci\u00f3n para buscar CVEs espec\u00edficos de esas versiones. No encontramos dependencias con CVEs cr\u00edticos activos al momento de la prueba.Herramienta: OWASP ZAP \u00b7 DevTools<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"340\" src=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-254-1024x340.png\" alt=\"\" class=\"wp-image-87201\" srcset=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-254-1024x340.png 1024w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-254-300x100.png 300w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-254-768x255.png 768w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-254-1536x510.png 1536w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-254.png 1909w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">A07 \u00b7 Authentication Failures<\/h3>\n\n\n\n<h4 class=\"wp-block-heading\">XSS en campos de entrada<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">Insertamos payloads de Cross-Site Scripting manualmente en campos de formulario. Algunos reflejaban el script en la respuesta sin sanitizar. Payloads probados: <code>&lt;script&gt;alert('XSS')&lt;\/script&gt;<\/code> y variantes con URL encoding y Base64.Herramienta: pruebas manuales \u00b7 OWASP ZAP<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"526\" src=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-253-1024x526.png\" alt=\"\" class=\"wp-image-87200\" srcset=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-253-1024x526.png 1024w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-253-300x154.png 300w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-253-768x394.png 768w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-253-1536x789.png 1536w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-253.png 1909w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<h3 class=\"wp-block-heading\">A08 \u00b7 Integrity Failures<\/h3>\n\n\n\n<h4 class=\"wp-block-heading\">Sin Subresource Integrity en recursos externos<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">No encontramos uso de SRI para scripts y estilos cargados desde CDNs externos. Sin CVEs cr\u00edticos activos en las dependencias al momento de la prueba.Herramienta: DevTools \u00b7 OWASP ZAP<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"529\" src=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-882-1024x529.png\" alt=\"\" class=\"wp-image-88655\" srcset=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-882-1024x529.png 1024w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-882-300x155.png 300w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-882-768x397.png 768w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-882-1536x794.png 1536w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-882.png 1908w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">A09 \u00b7 Logging Failures<\/h3>\n\n\n\n<h4 class=\"wp-block-heading\">Errores inconsistentes: algunos exponen info interna<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">Enviamos formularios con datos inv\u00e1lidos y payloads de inyecci\u00f3n. En algunos casos la app respond\u00eda limpiamente; en otros devolvi\u00f3 trazas de error con detalles del sistema visibles en la respuesta HTTP. El manejo de excepciones no es uniforme en toda la aplicaci\u00f3n.Herramienta: pruebas manuales \u00b7 OWASP ZAP<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"528\" src=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-255-1024x528.png\" alt=\"\" class=\"wp-image-87202\" srcset=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-255-1024x528.png 1024w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-255-300x155.png 300w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-255-768x396.png 768w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-255-1536x792.png 1536w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-255.png 1910w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">A10 \u00b7 Server-Side Request Forgery<\/h3>\n\n\n\n<h4 class=\"wp-block-heading\">Sin evidencia de SSRF<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">No encontramos par\u00e1metros que aceptaran URLs arbitrarias ni funcionalidades que hicieran peticiones servidor-a-servidor configurables por el usuario. El stack monol\u00edtico reduce considerablemente esta superficie de ataque.Herramienta: DevTools \u00b7 OWASP ZAP \u00b7 an\u00e1lisis manual<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"516\" src=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-256-1024x516.png\" alt=\"\" class=\"wp-image-87203\" srcset=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-256-1024x516.png 1024w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-256-300x151.png 300w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-256-768x387.png 768w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-256-1536x774.png 1536w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-256.png 1915w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\"><\/h3>\n\n\n\n<h3 class=\"wp-block-heading\">Vulnerabilidades principales y c\u00f3mo arreglarlas<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>1. Login sin l\u00edmite de intentos (A04)<\/strong> Permite fuerza bruta automatizada sin fricci\u00f3n. \u2192 Agregar <code>express-rate-limit<\/code>: m\u00e1ximo 5 intentos por IP cada 15 minutos + bloqueo temporal de cuenta tras 10 fallos.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>2. XSS en campos de entrada (A07)<\/strong> Los inputs reflejan scripts sin sanitizar. \u2192 Sanitizar con <code>DOMPurify<\/code> en frontend y validar con <code>validator.js<\/code> en backend antes de guardar en BD.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>3. Headers de seguridad ausentes (A05)<\/strong> Sin CSP, X-Frame-Options ni Referrer-Policy \u2192 habilita XSS y clickjacking. \u2192 Instalar <code>Helmet.js<\/code> en Express con CSP estricta. Una l\u00ednea: <code>app.use(helmet())<\/code>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>4. Stack expuesto (A06)<\/strong> El header <code>X-Powered-By<\/code> revela el framework. \u2192 Desactivar con <code>app.disable('x-powered-by')<\/code> y configurar mensajes de error gen\u00e9ricos.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>5. Errores que filtran info interna (A09)<\/strong> Algunas respuestas devuelven stack traces. \u2192 Middleware global de errores en Express que devuelva siempre <code>{ error: \"Internal error\" }<\/code> al cliente y registre el detalle solo en logs del servidor.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>6. Sin SRI en recursos externos (A08)<\/strong> Si un CDN se compromete, se inyecta c\u00f3digo en la app. \u2192 Agregar atributo <code>integrity=\"sha384-...\"<\/code> a todos los <code>&lt;script&gt;<\/code> y <code>&lt;link&gt;<\/code> externos.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Lo que aprendimos<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">El <strong>Vibe Coding con inteligencia artificial<\/strong> funciona. Permite construir aplicaciones reales y complejas sin saber programar, siempre que sepas estructurar bien los prompts y revisar cr\u00edticamente lo que la IA genera. Las cosas que salieron bien en las pruebas de seguridad \u2014HTTPS, Prisma contra SQL Injection, JWT con bcrypt\u2014 funcionaron porque los prompts las ped\u00edan expl\u00edcitamente. Las que fallaron \u2014fuerza bruta sin l\u00edmite, headers incompletos, XSS\u2014 fallaron porque ning\u00fan prompt de arquitectura general las cubre por defecto.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">La conclusi\u00f3n pr\u00e1ctica: <strong>si construyes con Vibe Coding con inteligencia artificial, auditalo con OWASP<\/strong>. No como un paso opcional al final, sino como parte del proceso. El <strong>Vibe Coding con inteligencia artificial<\/strong> te da velocidad para construir; el pen testing te da la confianza para desplegarlo.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Todo el c\u00f3digo est\u00e1 en GitHub y la app corre en Render. Los cinco prompts est\u00e1n en este art\u00edculo. Si quieres replicarlo, ya tienes todo lo que necesitas para empezar.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Cr\u00e9ditos<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Autores <a href=\"https:\/\/niixer.com\/?s=Brayan+Camilo+Miranda\" target=\"_blank\" rel=\"noreferrer noopener\">Brayan Camilo Miranda<\/a> \u2013 <a href=\"https:\/\/niixer.com\/?s=Nicolas+Buitrago\" target=\"_blank\" rel=\"noreferrer noopener\">Nicol\u00e1s Buitrago Bogot\u00e1<\/a> \u2013 <a href=\"https:\/\/niixer.com\/?s=Luis+Fernando+Martinez\" target=\"_blank\" rel=\"noreferrer noopener\">Luis Fernando Mart\u00ednez<\/a><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Editores <a href=\"https:\/\/niixer.com\/?s=carlos+ivan+pinzon\" target=\"_blank\" rel=\"noreferrer noopener\">Magister Ingeniero Pinz\u00f3n<\/a> \u2013 <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">C\u00f3digo: UCIAG-7<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Universidad<a href=\"https:\/\/www.ucentral.edu.co\/\" target=\"_blank\" rel=\"noreferrer noopener\">Universidad Central<\/a><\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Fuentes<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Brennan, K. (2026, abril). Vibe coding may offer insight into our AI future. <em>The Harvard Gazette.<\/em> <a href=\"https:\/\/news.harvard.edu\/gazette\/story\/2026\/04\/vibe-coding-may-offer-insight-into-our-ai-future\/\" target=\"_blank\" rel=\"noreferrer noopener\">news.harvard.edu<\/a><\/li>\n\n\n\n<li>DataCamp. (2025, diciembre). \u00bfQu\u00e9 es la ingenier\u00eda de prompts? Una gu\u00eda detallada para 2026. <a href=\"https:\/\/www.datacamp.com\/es\/blog\/what-is-prompt-engineering-the-future-of-ai-communication\" target=\"_blank\" rel=\"noreferrer noopener\">datacamp.com<\/a><\/li>\n\n\n\n<li>daily.dev. (2026). Vibe coding in 2026: How AI is changing the way developers write code. <a href=\"https:\/\/daily.dev\/blog\/vibe-coding-how-ai-changing-developers-code\" target=\"_blank\" rel=\"noreferrer noopener\">daily.dev<\/a><\/li>\n\n\n\n<li>Ecosistema Startup. (2026). Google AI Studio: qu\u00e9 es y para qu\u00e9 sirve en 2026. <a href=\"https:\/\/ecosistemastartup.com\/google-ai-studio-que-es-y-para-que-sirve-en-2026\/\" target=\"_blank\" rel=\"noreferrer noopener\">ecosistemastartup.com<\/a><\/li>\n\n\n\n<li>Founderz. (2025). Prompt engineering: mejora la IA creativa. <a href=\"https:\/\/founderz.com\/es\/blog\/prompt-engineering-ia\/\" target=\"_blank\" rel=\"noreferrer noopener\">founderz.com<\/a><\/li>\n\n\n\n<li>Generative, Inc. (2025, octubre). Vibe coding: The future of intuitive software development. <a href=\"https:\/\/www.generative.inc\/vibe-coding-the-future-of-intuitive-software-development\" target=\"_blank\" rel=\"noreferrer noopener\">generative.inc<\/a><\/li>\n\n\n\n<li>Google Cloud. (2025). Vibe coding explained: Tools and guides. <a href=\"https:\/\/cloud.google.com\/discover\/what-is-vibe-coding\" target=\"_blank\" rel=\"noreferrer noopener\">cloud.google.com<\/a><\/li>\n\n\n\n<li>Google Cloud. (2026). M\u00e1s de 10 herramientas de IA sin coste econ\u00f3mico para el 2026. <a href=\"https:\/\/cloud.google.com\/use-cases\/free-ai-tools?hl=es\" target=\"_blank\" rel=\"noreferrer noopener\">cloud.google.com<\/a><\/li>\n\n\n\n<li>IBM. (2025a). What is vibe coding? <em>IBM Think.<\/em> <a href=\"https:\/\/www.ibm.com\/think\/topics\/vibe-coding\" target=\"_blank\" rel=\"noreferrer noopener\">ibm.com<\/a><\/li>\n\n\n\n<li>IBM. (2025b). \u00bfQu\u00e9 es el prompt engineering? <em>IBM Think.<\/em> <a href=\"https:\/\/www.ibm.com\/es-es\/think\/topics\/prompt-engineering\" target=\"_blank\" rel=\"noreferrer noopener\">ibm.com<\/a><\/li>\n\n\n\n<li>index.dev. (2025). How vibe coding is changing software development in 2025. <a href=\"https:\/\/www.index.dev\/blog\/vibe-coding-ai-development\" target=\"_blank\" rel=\"noreferrer noopener\">index.dev<\/a><\/li>\n\n\n\n<li>Infobae Tecno. (2026, marzo 17). C\u00f3mo funciona Google AI Studio, la herramienta para crear aplicaciones con Gemini. <a href=\"https:\/\/www.infobae.com\/tecno\/2026\/03\/17\/como-funciona-google-ai-studio-la-herramienta-para-crear-aplicaciones-con-gemini\/\" target=\"_blank\" rel=\"noreferrer noopener\">infobae.com<\/a><\/li>\n\n\n\n<li>OWASP Foundation. (2021). <em>OWASP Top 10.<\/em> <a href=\"https:\/\/owasp.org\/www-project-top-ten\/\" target=\"_blank\" rel=\"noreferrer noopener\">owasp.org<\/a><\/li>\n\n\n\n<li>OWASP Foundation. (2023). <em>OWASP ZAP.<\/em> <a href=\"https:\/\/owasp.org\/www-project-zap\/\" target=\"_blank\" rel=\"noreferrer noopener\">owasp.org<\/a><\/li>\n\n\n\n<li>OWASP Foundation. (2023). <em>OWASP Web Security Testing Guide.<\/em> <a href=\"https:\/\/owasp.org\/www-project-web-security-testing-guide\/\" target=\"_blank\" rel=\"noreferrer noopener\">owasp.org<\/a><\/li>\n\n\n\n<li>ICANN. (s.f.). WHOIS lookup. <a href=\"https:\/\/lookup.icann.org\/\" target=\"_blank\" rel=\"noreferrer noopener\">lookup.icann.org<\/a><\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n","protected":false},"excerpt":{"rendered":"<p>01 \u00bfC\u00f3mo funciona el Vibe Coding?\u2014 La metodolog\u00eda para construir software con IA sin programar El Vibe Coding con IA es una forma de crear software donde t\u00fa describes lo que quieres en lenguaje natural y la IA genera el c\u00f3digo por ti. No reemplaza el pensamiento l\u00f3gico ni laSeguir Leyendo<\/p>\n","protected":false},"author":2025,"featured_media":87006,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"colormag_page_container_layout":"default_layout","colormag_page_sidebar_layout":"default_layout","footnotes":""},"categories":[4557],"tags":[4559,4561,228,31,4524],"class_list":["post-86998","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-hacking-etico","tag-hacking-etico","tag-owasp-top-10","tag-tecnologia-2","tag-tecnologia","tag-vibe-code"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.7 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Vibe Coding con IA y como auditarla con OWASP TOP 10<\/title>\n<meta name=\"description\" content=\"Aprende a crear una app con IA usando Vibe Coding con inteligencia artificial y Google AI Studio, y auditala con OWASP Top 10.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/niixer.com\/index.php\/2026\/05\/19\/vibe-coding-con-ia\/\" \/>\n<meta property=\"og:locale\" content=\"es_ES\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Vibe Coding con IA y como auditarla con OWASP TOP 10\" \/>\n<meta property=\"og:description\" content=\"Aprende a crear una app con IA usando Vibe Coding con inteligencia artificial y Google AI Studio, y auditala con OWASP Top 10.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/niixer.com\/index.php\/2026\/05\/19\/vibe-coding-con-ia\/\" \/>\n<meta property=\"og:site_name\" content=\"Portal de noticias de tecnolog\u00eda, Realidad Virtual, Aumentada y Mixta, Videojuegos\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/niixer\/\" \/>\n<meta property=\"article:published_time\" content=\"2026-05-19T17:36:47+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-05-28T21:24:44+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/ChatGPT-Image-19-may-2026-12_44_01-1.webp\" \/>\n\t<meta property=\"og:image:width\" content=\"1080\" \/>\n\t<meta property=\"og:image:height\" content=\"720\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/webp\" \/>\n<meta name=\"author\" content=\"bmirandah\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Escrito por\" \/>\n\t<meta name=\"twitter:data1\" content=\"bmirandah\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tiempo de lectura\" \/>\n\t<meta name=\"twitter:data2\" content=\"18 minutos\" \/>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Vibe Coding con IA y como auditarla con OWASP TOP 10","description":"Aprende a crear una app con IA usando Vibe Coding con inteligencia artificial y Google AI Studio, y auditala con OWASP Top 10.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/niixer.com\/index.php\/2026\/05\/19\/vibe-coding-con-ia\/","og_locale":"es_ES","og_type":"article","og_title":"Vibe Coding con IA y como auditarla con OWASP TOP 10","og_description":"Aprende a crear una app con IA usando Vibe Coding con inteligencia artificial y Google AI Studio, y auditala con OWASP Top 10.","og_url":"https:\/\/niixer.com\/index.php\/2026\/05\/19\/vibe-coding-con-ia\/","og_site_name":"Portal de noticias de tecnolog\u00eda, Realidad Virtual, Aumentada y Mixta, Videojuegos","article_publisher":"https:\/\/www.facebook.com\/niixer\/","article_published_time":"2026-05-19T17:36:47+00:00","article_modified_time":"2026-05-28T21:24:44+00:00","og_image":[{"width":1080,"height":720,"url":"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/ChatGPT-Image-19-may-2026-12_44_01-1.webp","type":"image\/webp"}],"author":"bmirandah","twitter_card":"summary_large_image","twitter_misc":{"Escrito por":"bmirandah","Tiempo de lectura":"18 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/niixer.com\/index.php\/2026\/05\/19\/vibe-coding-con-ia\/#article","isPartOf":{"@id":"https:\/\/niixer.com\/index.php\/2026\/05\/19\/vibe-coding-con-ia\/"},"author":{"name":"bmirandah","@id":"https:\/\/niixer.com\/#\/schema\/person\/d9e304743cd55f555269ae4e3d63d722"},"headline":"Vibe Coding con inteligencia artificial: crea una app con Google AI Studio y auditala con OWASP TOP 10","datePublished":"2026-05-19T17:36:47+00:00","dateModified":"2026-05-28T21:24:44+00:00","mainEntityOfPage":{"@id":"https:\/\/niixer.com\/index.php\/2026\/05\/19\/vibe-coding-con-ia\/"},"wordCount":3082,"publisher":{"@id":"https:\/\/niixer.com\/#organization"},"image":{"@id":"https:\/\/niixer.com\/index.php\/2026\/05\/19\/vibe-coding-con-ia\/#primaryimage"},"thumbnailUrl":"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/ChatGPT-Image-19-may-2026-12_44_01-1.webp","keywords":["Hacking \u00c9tico","OWASP Top 10","Tecnologia","tecnolog\u00eda","vibe code"],"articleSection":["Hacking \u00c9tico"],"inLanguage":"es"},{"@type":"WebPage","@id":"https:\/\/niixer.com\/index.php\/2026\/05\/19\/vibe-coding-con-ia\/","url":"https:\/\/niixer.com\/index.php\/2026\/05\/19\/vibe-coding-con-ia\/","name":"Vibe Coding con IA y como auditarla con OWASP TOP 10","isPartOf":{"@id":"https:\/\/niixer.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/niixer.com\/index.php\/2026\/05\/19\/vibe-coding-con-ia\/#primaryimage"},"image":{"@id":"https:\/\/niixer.com\/index.php\/2026\/05\/19\/vibe-coding-con-ia\/#primaryimage"},"thumbnailUrl":"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/ChatGPT-Image-19-may-2026-12_44_01-1.webp","datePublished":"2026-05-19T17:36:47+00:00","dateModified":"2026-05-28T21:24:44+00:00","description":"Aprende a crear una app con IA usando Vibe Coding con inteligencia artificial y Google AI Studio, y auditala con OWASP Top 10.","breadcrumb":{"@id":"https:\/\/niixer.com\/index.php\/2026\/05\/19\/vibe-coding-con-ia\/#breadcrumb"},"inLanguage":"es","potentialAction":[{"@type":"ReadAction","target":["https:\/\/niixer.com\/index.php\/2026\/05\/19\/vibe-coding-con-ia\/"]}]},{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/niixer.com\/index.php\/2026\/05\/19\/vibe-coding-con-ia\/#primaryimage","url":"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/ChatGPT-Image-19-may-2026-12_44_01-1.webp","contentUrl":"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/ChatGPT-Image-19-may-2026-12_44_01-1.webp","width":1080,"height":720,"caption":"Portada"},{"@type":"BreadcrumbList","@id":"https:\/\/niixer.com\/index.php\/2026\/05\/19\/vibe-coding-con-ia\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Portada","item":"https:\/\/niixer.com\/"},{"@type":"ListItem","position":2,"name":"Vibe Coding con inteligencia artificial: crea una app con Google AI Studio y auditala con OWASP TOP 10"}]},{"@type":"WebSite","@id":"https:\/\/niixer.com\/#website","url":"https:\/\/niixer.com\/","name":"Portal de noticias de tecnolog\u00eda, ciencia, Android, iOS, Realidad Virtual, Aumentada y Mixta, Videojuegos, computadores, todo lo mas reciente en tecnolog\u00eda","description":"Portal de noticias de tecnolog\u00eda","publisher":{"@id":"https:\/\/niixer.com\/#organization"},"alternateName":"Niixer","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/niixer.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"es"},{"@type":"Organization","@id":"https:\/\/niixer.com\/#organization","name":"Niixer","alternateName":"Niixer.com","url":"https:\/\/niixer.com\/","logo":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/niixer.com\/#\/schema\/logo\/image\/","url":"https:\/\/niixer.com\/wp-content\/uploads\/2022\/08\/logo-niixer-sin-fondo-1.png","contentUrl":"https:\/\/niixer.com\/wp-content\/uploads\/2022\/08\/logo-niixer-sin-fondo-1.png","width":140,"height":140,"caption":"Niixer"},"image":{"@id":"https:\/\/niixer.com\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/niixer\/","https:\/\/www.instagram.com\/niixer.tecnologia\/"]},{"@type":"Person","@id":"https:\/\/niixer.com\/#\/schema\/person\/d9e304743cd55f555269ae4e3d63d722","name":"bmirandah","image":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/secure.gravatar.com\/avatar\/ee84bdb06cef7604251e07bd361c9b62ea65e25e6dc061ca760ba2d97cb6e6ff?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/ee84bdb06cef7604251e07bd361c9b62ea65e25e6dc061ca760ba2d97cb6e6ff?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/ee84bdb06cef7604251e07bd361c9b62ea65e25e6dc061ca760ba2d97cb6e6ff?s=96&d=mm&r=g","caption":"bmirandah"},"url":"https:\/\/niixer.com\/index.php\/author\/bmirandah\/"}]}},"jetpack_featured_media_url":"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/ChatGPT-Image-19-may-2026-12_44_01-1.webp","_links":{"self":[{"href":"https:\/\/niixer.com\/index.php\/wp-json\/wp\/v2\/posts\/86998","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/niixer.com\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/niixer.com\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/niixer.com\/index.php\/wp-json\/wp\/v2\/users\/2025"}],"replies":[{"embeddable":true,"href":"https:\/\/niixer.com\/index.php\/wp-json\/wp\/v2\/comments?post=86998"}],"version-history":[{"count":22,"href":"https:\/\/niixer.com\/index.php\/wp-json\/wp\/v2\/posts\/86998\/revisions"}],"predecessor-version":[{"id":89231,"href":"https:\/\/niixer.com\/index.php\/wp-json\/wp\/v2\/posts\/86998\/revisions\/89231"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/niixer.com\/index.php\/wp-json\/wp\/v2\/media\/87006"}],"wp:attachment":[{"href":"https:\/\/niixer.com\/index.php\/wp-json\/wp\/v2\/media?parent=86998"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/niixer.com\/index.php\/wp-json\/wp\/v2\/categories?post=86998"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/niixer.com\/index.php\/wp-json\/wp\/v2\/tags?post=86998"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}