{"id":86561,"date":"2026-05-19T11:25:12","date_gmt":"2026-05-19T16:25:12","guid":{"rendered":"https:\/\/niixer.com\/?p=86561"},"modified":"2026-05-26T20:03:05","modified_gmt":"2026-05-27T01:03:05","slug":"automatizacion-del-desarrollo-web-creando-un-crm-con-ia-studio","status":"publish","type":"post","link":"https:\/\/niixer.com\/index.php\/2026\/05\/19\/automatizacion-del-desarrollo-web-creando-un-crm-con-ia-studio\/","title":{"rendered":"Automatizaci\u00f3n del desarrollo web: creando un CRM con IA Studio"},"content":{"rendered":"\n<p class=\"has-small-font-size wp-block-paragraph\"><strong>Tema:<\/strong> Aprende c\u00f3mo crear y desplegar un CRM moderno utilizando IA Studio, Supabase, GitHub y Render paso a paso. Asimismo, descubre con el <em>Vibe Coding<\/em> y la inteligencia artificial permiten agilizar el desarrollo web, automatizar procesos y construir aplicaciones modernas de manera m\u00e1s r\u00e1pida y eficiente.| <strong>Tiempo de lectura estimado:<\/strong> 20 minutos<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>INTRODUCCION<\/strong><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">La inteligencia artificial ha transformado el desarrollo de software moderno, permitiendo automatizar procesos que anteriormente requer\u00edan largos tiempos de programaci\u00f3n y configuraci\u00f3n manual. Actualmente, herramientas como IA Studio facilitan la creaci\u00f3n de aplicaciones mediante prompts inteligentes, agilizando el desarrollo de plataformas empresariales de manera r\u00e1pida y eficiente.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Este enfoque se relaciona con el <em>Vibe Coding<\/em>, una metodolog\u00eda de programaci\u00f3n asistida por inteligencia artificial donde el desarrollador describe funcionalidades en lenguaje natural y la IA genera parte del c\u00f3digo, estructuras y configuraciones necesarias. Esto permite enfocarse m\u00e1s en la l\u00f3gica del negocio y reducir tareas repetitivas de programaci\u00f3n.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">En este proyecto se desarroll\u00f3 un CRM m\u00e9dico utilizando IA Studio, Supabase, GitHub y Render, con el prop\u00f3sito de demostrar c\u00f3mo la inteligencia artificial puede <strong>mejorar<\/strong> el desarrollo web y fortalecer la administraci\u00f3n de aplicaciones modernas.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Durante el desarrollo se realizaron configuraciones de bases de datos, integraci\u00f3n de variables de entorno, publicaci\u00f3n del c\u00f3digo en GitHub y despliegue en Render. Adem\u00e1s, se solucionaron errores relacionados con autenticaci\u00f3n y creaci\u00f3n de usuarios, fortaleciendo la seguridad y funcionalidad del sistema.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">El uso de IA permiti\u00f3 acelerar el desarrollo de componentes frontend y backend, mejorar la productividad y facilitar la implementaci\u00f3n del proyecto, evidenciando c\u00f3mo el <em>Vibe Coding<\/em> est\u00e1 transformando la manera en que se construyen aplicaciones modernas.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>\u00bfQu\u00e9 es IA Studio y por qu\u00e9 es importante?<\/strong><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">IA Studio es una herramienta basada en inteligencia artificial que permite generar aplicaciones web utilizando instrucciones o prompts personalizados. Su importancia radica en la automatizaci\u00f3n del desarrollo, reduciendo tiempos de programaci\u00f3n y facilitando la integraci\u00f3n con tecnolog\u00edas modernas.<a href=\"https:\/\/ebookcentral-proquest-com.ezproxy.ucentral.edu.co\/lib\/ucentralco\/reader.action?docID=294367&amp;c=UERG\">veamos la informacion aqui.<\/a><\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Beneficios principales de IA Studio<\/strong><\/h2>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Automatizaci\u00f3n del desarrollo<\/strong><\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Permite generar c\u00f3digo autom\u00e1ticamente utilizando inteligencia artificial.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Integraci\u00f3n r\u00e1pida<\/strong><\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Facilita la conexi\u00f3n con servicios externos como bases de datos y plataformas cloud.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Optimizaci\u00f3n del tiempo<\/strong><\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Reduce significativamente el tiempo de construcci\u00f3n de aplicaciones.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Escalabilidad<\/strong><\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Permite crear proyectos modernos y preparados para futuras mejoras.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Creaci\u00f3n de la base de datos en Supabase<\/strong><\/h2>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Empezamos creando una base de datos en SupaBase para el proyecto. Creamos la cuenta de SupaBase y la base de datos que va a usar IA Studio para crear el proyecto.<\/li>\n<\/ol>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"678\" height=\"755\" src=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-168.png\" alt=\"\" class=\"wp-image-86935\" srcset=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-168.png 678w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-168-269x300.png 269w\" sizes=\"auto, (max-width: 678px) 100vw, 678px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"608\" height=\"367\" src=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-169.png\" alt=\"\" class=\"wp-image-86937\" srcset=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-169.png 608w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-169-300x181.png 300w\" sizes=\"auto, (max-width: 608px) 100vw, 608px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"444\" src=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-170-1024x444.png\" alt=\"\" class=\"wp-image-86938\" srcset=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-170-1024x444.png 1024w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-170-300x130.png 300w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-170-768x333.png 768w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-170-1536x667.png 1536w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-170.png 1615w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Generaci\u00f3n del prompt utilizando ChatGPT<\/strong><\/h2>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Se le pidi\u00f3 a ChatGPT que creara un prompt para IA Studio, se le dieron unos par\u00e1metros (incluyendo la base de datos creada anteriormente con su nombre y contrase\u00f1a) y nos di\u00f3 el siguiente prompt:&nbsp;<a href=\"https:\/\/docs.google.com\/document\/d\/1Rv-SB1y6cJ45sjRgvzPKBdRlZc9Pm-bjEwVO1nrWBps\/edit?usp=sharing\">PROMPT IA Studio<\/a><\/li>\n<\/ol>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"354\" src=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-171-1024x354.png\" alt=\"\" class=\"wp-image-86941\" srcset=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-171-1024x354.png 1024w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-171-300x104.png 300w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-171-768x266.png 768w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-171-1536x531.png 1536w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-171.png 1919w\" 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\"><strong>Construcci\u00f3n autom\u00e1tica del CRM con IA Studio<\/strong><\/h2>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Una vez teniendo el prompt se lo dimos a IA Studio para que empezara el proceso.<\/li>\n<\/ol>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"1008\" height=\"489\" src=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-172.png\" alt=\"\" class=\"wp-image-86942\" srcset=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-172.png 1008w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-172-300x146.png 300w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-172-768x373.png 768w\" sizes=\"auto, (max-width: 1008px) 100vw, 1008px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"459\" src=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-173-1024x459.png\" alt=\"\" class=\"wp-image-86943\" srcset=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-173-1024x459.png 1024w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-173-300x135.png 300w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-173-768x344.png 768w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-173-1536x689.png 1536w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-173.png 1565w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Login de usuarios<\/strong><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Luego de unos minutos cargando, IA Studio nos pidi\u00f3 una variables de entorno para conectar el CRM con SupaBase.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"517\" height=\"582\" src=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-174.png\" alt=\"\" class=\"wp-image-86944\" srcset=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-174.png 517w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-174-266x300.png 266w\" sizes=\"auto, (max-width: 517px) 100vw, 517px\" \/><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Gesti\u00f3n de cuentas<\/strong><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Estas variables se obtuvieron desde la misma p\u00e1gina de SupaBase de la siguiente forma: para <code>DATABASE_URL<\/code>, dentro del proyecto se debe ir a la secci\u00f3n \u201cDirect\u201d y copiar el \u201cConnection string\u201d. Luego, se reemplaza \u201c[YOUR-PASSWORD]\u201d por la contrase\u00f1a real de la base de datos.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"948\" height=\"227\" src=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-175.png\" alt=\"\" class=\"wp-image-86946\" srcset=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-175.png 948w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-175-300x72.png 300w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-175-768x184.png 768w\" sizes=\"auto, (max-width: 948px) 100vw, 948px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"914\" height=\"191\" src=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-176.png\" alt=\"\" class=\"wp-image-86947\" srcset=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-176.png 914w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-176-300x63.png 300w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-176-768x160.png 768w\" sizes=\"auto, (max-width: 914px) 100vw, 914px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Para <code>SUPABASE_URL<\/code>, en la p\u00e1gina principal del proyecto se puede visualizar la URL, la cual debe ser copiada directamente.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"610\" height=\"200\" src=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-177.png\" alt=\"\" class=\"wp-image-86948\" srcset=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-177.png 610w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-177-300x98.png 300w\" sizes=\"auto, (max-width: 610px) 100vw, 610px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Para <code>SUPABASE_ANON_KEY<\/code>, se obtiene desde la p\u00e1gina principal accediendo a configuraci\u00f3n o \u201cSettings\u201d, luego a \u201cAPI Keys\u201d. Dentro de esta secci\u00f3n, se debe ir a \u201cLegacy anon, service_role API Keys\u201d y copiar la clave denominada \u201canon public\u201d.<\/p>\n\n\n\n<figure class=\"wp-block-image size-medium is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"101\" height=\"300\" src=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-178-101x300.png\" alt=\"\" class=\"wp-image-86949\" style=\"width:186px\" srcset=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-178-101x300.png 101w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-178.png 204w\" sizes=\"auto, (max-width: 101px) 100vw, 101px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"240\" height=\"306\" src=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-179.png\" alt=\"\" class=\"wp-image-86950\" srcset=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-179.png 240w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-179-235x300.png 235w\" sizes=\"auto, (max-width: 240px) 100vw, 240px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"239\" src=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-180-1024x239.png\" alt=\"\" class=\"wp-image-86951\" srcset=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-180-1024x239.png 1024w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-180-300x70.png 300w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-180-768x179.png 768w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-180.png 1147w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">SUPABASE_SERVICE_ROLE_KEY: Se consigue haciendo los mismos pasos que antes y en vez de copiar \u201canon public\u201d se copia el \u201cservice_role\u201d.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"356\" src=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-181-1024x356.png\" alt=\"\" class=\"wp-image-86952\" srcset=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-181-1024x356.png 1024w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-181-300x104.png 300w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-181-768x267.png 768w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-181.png 1179w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Para <code>JWT_SECRET<\/code>, se debe crear manualmente, asegur\u00e1ndose de que sea lo m\u00e1s segura posible.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Integraci\u00f3n con base de datos<\/strong><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">El proceso de creaci\u00f3n de la aplicaci\u00f3n puede tardar unos momentos en completarse; en caso de que no se reflejen cambios, se puede hacer clic en \u201cReload Now\u201d.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"601\" height=\"619\" src=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-182.png\" alt=\"\" class=\"wp-image-86953\" srcset=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-182.png 601w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-182-291x300.png 291w\" sizes=\"auto, (max-width: 601px) 100vw, 601px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Una vez finalizado el proceso, se mostrar\u00e1 una vista previa de c\u00f3mo queda la p\u00e1gina creada, junto con las opciones disponibles.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Panel administrativo<\/strong><\/h3>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"619\" src=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-183-1024x619.png\" alt=\"\" class=\"wp-image-86954\" srcset=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-183-1024x619.png 1024w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-183-300x181.png 300w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-183-768x464.png 768w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-183.png 1376w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"563\" height=\"724\" src=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-184.png\" alt=\"\" class=\"wp-image-86956\" srcset=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-184.png 563w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-184-233x300.png 233w\" sizes=\"auto, (max-width: 563px) 100vw, 563px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"564\" src=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-185-1024x564.png\" alt=\"\" class=\"wp-image-86957\" srcset=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-185-1024x564.png 1024w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-185-300x165.png 300w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-185-768x423.png 768w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-185.png 1373w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Publicaci\u00f3n del proyecto en GitHub<\/strong><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">A continuaci\u00f3n, se debe ir a la esquina superior derecha de IA Studio y hacer clic en \u201cPublish\u201d o \u201cPublicar\u201d. Luego, se selecciona GitHub y se elige la opci\u00f3n de publicaci\u00f3n p\u00fablica, de modo que la p\u00e1gina pueda ser visible para todos.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"421\" height=\"197\" src=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-186.png\" alt=\"\" class=\"wp-image-86959\" srcset=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-186.png 421w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-186-300x140.png 300w\" sizes=\"auto, (max-width: 421px) 100vw, 421px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"763\" height=\"599\" src=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-187.png\" alt=\"\" class=\"wp-image-86960\" srcset=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-187.png 763w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-187-300x236.png 300w\" sizes=\"auto, (max-width: 763px) 100vw, 763px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Se debe verificar que toda la documentaci\u00f3n que se va a subir a GitHub sea correcta y, posteriormente, hacer clic en \u201cStage and commit all changes\u201d.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"661\" height=\"589\" src=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-188.png\" alt=\"\" class=\"wp-image-86961\" srcset=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-188.png 661w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-188-300x267.png 300w\" sizes=\"auto, (max-width: 661px) 100vw, 661px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Una vez finalizado el proceso, se puede <a href=\"https:\/\/github.com\/\">acceder al GitHub<\/a> creado, donde se visualizar\u00e1 el repositorio con la informaci\u00f3n correspondiente. En este caso, se encuentra disponible en el siguiente enlace: https:\/\/github.com\/CRMedica\/CRMedica_Colombia.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Repositorio del proyecto<\/strong><\/h3>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"627\" src=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-189-1024x627.png\" alt=\"\" class=\"wp-image-86962\" srcset=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-189-1024x627.png 1024w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-189-300x184.png 300w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-189-768x470.png 768w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-189.png 1269w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Por otra parte, se debe crear una cuenta nueva en la <a href=\"https:\/\/render.com\/\">p\u00e1gina de Render<\/a>, ya que esta plataforma permitir\u00e1 alojar y publicar la aplicaci\u00f3n de forma r\u00e1pida y sencilla.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"463\" src=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-190-1024x463.png\" alt=\"\" class=\"wp-image-86963\" srcset=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-190-1024x463.png 1024w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-190-300x136.png 300w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-190-768x347.png 768w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-190.png 1214w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"576\" height=\"579\" src=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-191.png\" alt=\"\" class=\"wp-image-86964\" srcset=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-191.png 576w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-191-298x300.png 298w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-191-150x150.png 150w\" sizes=\"auto, (max-width: 576px) 100vw, 576px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Despu\u00e9s de crear la cuenta, se debe proceder a crear un nuevo servicio, seleccionando en este caso la opci\u00f3n de \u201cWeb Service\u201d o servicio web.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Despliegue de la aplicaci\u00f3n en Render<\/strong><\/h3>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"482\" src=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-192-1024x482.png\" alt=\"\" class=\"wp-image-86965\" srcset=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-192-1024x482.png 1024w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-192-300x141.png 300w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-192-768x362.png 768w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-192.png 1240w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">De igual forma, se debe configurar la plataforma vincul\u00e1ndola con la cuenta de GitHub previamente utilizada e instalar Render en dicha cuenta.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Configuraci\u00f3n del servicio<\/strong><\/h3>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"485\" src=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-193-1024x485.png\" alt=\"\" class=\"wp-image-86966\" srcset=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-193-1024x485.png 1024w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-193-300x142.png 300w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-193-768x363.png 768w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-193.png 1234w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"590\" height=\"565\" src=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-194.png\" alt=\"\" class=\"wp-image-86967\" srcset=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-194.png 590w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-194-300x287.png 300w\" sizes=\"auto, (max-width: 590px) 100vw, 590px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Una vez instalado y configurado, se podr\u00e1n visualizar los repositorios disponibles en GitHub y seleccionar el que se va a utilizar.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"306\" src=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-195-1024x306.png\" alt=\"\" class=\"wp-image-86968\" srcset=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-195-1024x306.png 1024w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-195-300x90.png 300w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-195-768x230.png 768w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-195.png 1223w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">En el siguiente paso, se deben configurar las variables de entorno necesarias para poder continuar, a\u00f1adiendo las correspondientes seg\u00fan los requerimientos del proyecto.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"434\" src=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-196-1024x434.png\" alt=\"\" class=\"wp-image-86969\" srcset=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-196-1024x434.png 1024w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-196-300x127.png 300w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-196-768x325.png 768w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-196-1536x651.png 1536w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-196.png 1563w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">En Render se podr\u00e1 visualizar la informaci\u00f3n del repositorio de GitHub y, una vez verificada, se puede seleccionar la opci\u00f3n \u201cConnect\u201d para confirmar que todo est\u00e9 funcionando correctamente.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"492\" src=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-197-1024x492.png\" alt=\"\" class=\"wp-image-86970\" srcset=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-197-1024x492.png 1024w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-197-300x144.png 300w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-197-768x369.png 768w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-197.png 1219w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Una vez hecho ya podemos entrar el link de la p\u00e1gina web: <a href=\"https:\/\/crmedica-colombia.onrender.com\/\">https:\/\/crmedica-colombia.onrender.com\/<\/a><\/li>\n<\/ol>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"612\" src=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-198-1024x612.png\" alt=\"\" class=\"wp-image-86971\" srcset=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-198-1024x612.png 1024w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-198-300x179.png 300w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-198-768x459.png 768w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-198.png 1417w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Soluci\u00f3n de errores encontrados<\/strong><\/h3>\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-199-1024x523.png\" alt=\"\" class=\"wp-image-86972\" srcset=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-199-1024x523.png 1024w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-199-300x153.png 300w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-199-768x392.png 768w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-199-1536x785.png 1536w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-199.png 1877w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Se realizaron cambios en el <strong>frontend<\/strong> debido a fallos detectados en el <strong>login<\/strong>, como la ausencia de la opci\u00f3n de <strong>recuperaci\u00f3n de contrase\u00f1a<\/strong> y la funcionalidad para <strong>crear una cuenta<\/strong>. Las correcciones se implementaron en <strong>IntelliJ IDEA<\/strong>, espec\u00edficamente modificando el script <strong><code>login.tsx<\/code><\/strong>, y posteriormente se subieron los cambios mediante un <strong>push<\/strong> al repositorio en <strong>GitHub<\/strong>.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"842\" height=\"704\" src=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-200.png\" alt=\"\" class=\"wp-image-86973\" srcset=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-200.png 842w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-200-300x251.png 300w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-200-768x642.png 768w\" sizes=\"auto, (max-width: 842px) 100vw, 842px\" \/><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Recuperaci\u00f3n de contrase\u00f1a<\/strong><\/h3>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"684\" height=\"938\" src=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-201.png\" alt=\"\" class=\"wp-image-86974\" srcset=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-201.png 684w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-201-219x300.png 219w\" sizes=\"auto, (max-width: 684px) 100vw, 684px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Como se puede observar en la imagen, ahora se encuentra disponible el apartado para crear una cuenta, as\u00ed como la opci\u00f3n de recuperaci\u00f3n o creaci\u00f3n de contrase\u00f1a.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"799\" height=\"691\" src=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-202.png\" alt=\"\" class=\"wp-image-86975\" srcset=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-202.png 799w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-202-300x259.png 300w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-202-768x664.png 768w\" sizes=\"auto, (max-width: 799px) 100vw, 799px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"438\" src=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-203-1024x438.png\" alt=\"\" class=\"wp-image-86976\" srcset=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-203-1024x438.png 1024w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-203-300x128.png 300w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-203-768x328.png 768w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-203-1536x656.png 1536w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-203-1400x600.png 1400w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-203.png 1919w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Se present\u00f3 un error al momento de crear el usuario, indicando: <strong>&#8220;No se pudo encontrar la tabla &#8216;public.users&#8217; en la cach\u00e9 del esquema&#8221;<\/strong>. Para solucionarlo, se copi\u00f3 el contenido del archivo <code>schema.sql<\/code> y se peg\u00f3 en el <strong>SQL Editor<\/strong> de la base de datos en Supabase. Posteriormente, se ejecut\u00f3 el script, lo que permiti\u00f3 crear correctamente la estructura necesaria y proceder con la creaci\u00f3n del usuario sin inconvenientes.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"815\" height=\"908\" src=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-204.png\" alt=\"\" class=\"wp-image-86977\" srcset=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-204.png 815w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-204-269x300.png 269w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-204-768x856.png 768w\" sizes=\"auto, (max-width: 815px) 100vw, 815px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"230\" src=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-206-1024x230.png\" alt=\"\" class=\"wp-image-86979\" srcset=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-206-1024x230.png 1024w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-206-300x67.png 300w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-206-768x172.png 768w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-206-1536x345.png 1536w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-206.png 1919w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Se agreg\u00f3 el endpoint <code>\/api\/auth\/forgot-password<\/code>, el cual recibe el correo del usuario y utiliza el m\u00e9todo <code>supabase.auth.resetPasswordForEmail()<\/code> de Supabase para enviar autom\u00e1ticamente un correo con un enlace seguro de restablecimiento. Dicho enlace redirige al usuario a la p\u00e1gina <code>\/reset-password<\/code> de la aplicaci\u00f3n.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Adicionalmente, en Render se configur\u00f3 la variable de entorno <code>APP_URL<\/code> con el valor <code>https:\/\/crmedica-colombia.onrender.com<\/code>, permitiendo que Supabase identifique el dominio al que debe redirigir al usuario despu\u00e9s de que este haga clic en el enlace recibido por correo.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"448\" src=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-207-1024x448.png\" alt=\"\" class=\"wp-image-86980\" srcset=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-207-1024x448.png 1024w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-207-300x131.png 300w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-207-768x336.png 768w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-207-1536x672.png 1536w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-207.png 1919w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"428\" src=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-208-1024x428.png\" alt=\"\" class=\"wp-image-86981\" srcset=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-208-1024x428.png 1024w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-208-300x125.png 300w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-208-768x321.png 768w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-208-1536x642.png 1536w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-208.png 1908w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"408\" src=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-209-1024x408.png\" alt=\"\" class=\"wp-image-86982\" srcset=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-209-1024x408.png 1024w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-209-300x120.png 300w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-209-768x306.png 768w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-209-1536x612.png 1536w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-209.png 1568w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"453\" src=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-210-1024x453.png\" alt=\"\" class=\"wp-image-86983\" srcset=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-210-1024x453.png 1024w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-210-300x133.png 300w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-210-768x340.png 768w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-210-1536x680.png 1536w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-210.png 1890w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<h1 class=\"wp-block-heading\"><strong>1. Reconocimiento de Red y Pruebas de Conectividad<\/strong><\/h1>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Objetivo General&nbsp;<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Realizar un reconocimiento de red, utilizando herramientas de diagn\u00f3stico para realizar pruebas de conectividad, rutas y puertos.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Objetivos Espec\u00edficos<\/strong>&nbsp;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">a. Comprender el uso del protocolo ICMP mediante comandos de ping<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">b. Identificar la ruta de paquetes usando Traceroute<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">c. Obtener la direccion IP publica del equipo&nbsp;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">d. Realizar un escaneo b\u00e1sico de puertos&nbsp;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Herramientas Utilizadas<\/strong>&nbsp;<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Consola de comandos CMD o Terminal<\/li>\n\n\n\n<li>Comando PING<\/li>\n\n\n\n<li>Tracert \/ Traceroute\u00a0<\/li>\n\n\n\n<li>Curl \/ nslookup<\/li>\n\n\n\n<li>Nmap<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Desarrollo de las pruebas implementadas&nbsp;<\/strong><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>a. Implementaci\u00f3n de Comando PING, prueba de conectividad&nbsp;<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Se usa el ping <a href=\"https:\/\/crmedica-colombia.onrender.com\/\">https:\/\/crmedica-colombia.onrender.com\/<\/a> para verificar la conectividad entre el equipo local (pc) y un servidor remoto mediante el protocolo ICMP.&nbsp;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Figura 1<\/strong><\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"977\" height=\"258\" src=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-993.png\" alt=\"\" class=\"wp-image-88905\" srcset=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-993.png 977w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-993-300x79.png 300w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-993-768x203.png 768w\" sizes=\"auto, (max-width: 977px) 100vw, 977px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Resultado Obtenido:<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Al ejecutar el comando ping al dominio <em>crmedica-colombia.onrender.com<\/em> se obtuvo respuesta satisfactoria desde la direcci\u00f3n IP 216.24.57.251, con un total de 4 paquetes enviados, 4 recibidos y 0% de p\u00e9rdida. Adem\u00e1s, los tiempos de respuesta fueron estables, con un promedio de 58 ms, lo que indica que el servidor se encuentra activo y accesible desde la red.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">El dominio resolvi\u00f3 correctamente hacia la infraestructura de Render y Cloudflare (gcp-us-west1-1.origin.onrender.com.cdn.cloudflare.net), evidenciando que el servicio est\u00e1 funcionando correctamente y que las solicitudes ICMP no est\u00e1n bloqueadas en este caso. Esto permite verificar la conectividad b\u00e1sica y disponibilidad del servidor en internet.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>b. Identificaci\u00f3n de rutas usando Traceroute \/ tracert&nbsp;<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Usaremos el comando tracert <a href=\"https:\/\/crmedica-colombia.onrender.com\/\">https:\/\/crmedica-colombia.onrender.com\/<\/a> que nos permite la identificaci\u00f3n de rutas.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Figura 2<\/strong><\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"829\" height=\"357\" src=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-994.png\" alt=\"\" class=\"wp-image-88908\" srcset=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-994.png 829w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-994-300x129.png 300w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-994-768x331.png 768w\" sizes=\"auto, (max-width: 829px) 100vw, 829px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Resultado Obtenido:<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">La prueba realizada con el comando tracert al dominio <em>crmedica-colombia.onrender.com<\/em> permiti\u00f3 identificar la ruta que siguen los paquetes desde el equipo local hasta el servidor de destino. Durante el recorrido se observaron varios saltos internos pertenecientes a la red privada del proveedor de internet (192.168.x.x y 10.x.x.x), antes de salir hacia direcciones p\u00fablicas asociadas a la infraestructura de Cloudflare y Render.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">El trazado alcanz\u00f3 correctamente la direcci\u00f3n final 216.24.57.251 en un total de 11 saltos, con tiempos promedio cercanos a los 58 ms. En uno de los saltos se present\u00f3 el mensaje \u201cTiempo de espera agotado para esta solicitud\u201d, lo cual es normal en algunos routers o firewalls que bloquean respuestas ICMP por motivos de seguridad o configuraci\u00f3n de red. Sin embargo, esto no afect\u00f3 la conectividad final, ya que la traza se complet\u00f3 exitosamente y el servidor respondi\u00f3 correctamente.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>c. Resultado de nslookup&nbsp;<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Figura 3<\/strong><\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"567\" height=\"199\" src=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-995.png\" alt=\"\" class=\"wp-image-88909\" srcset=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-995.png 567w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-995-300x105.png 300w\" sizes=\"auto, (max-width: 567px) 100vw, 567px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Resultados Obtenidos:<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Al ejecutar el comando nslookup sobre el dominio <em>crmedica-colombia.onrender.com <\/em>se obtuvo una respuesta DNS exitosa, permitiendo identificar las direcciones IP asociadas al dominio. La consulta resolvi\u00f3 el nombre hacia gcp-us-west1-1.origin.onrender.com.cdn.cloudflare.net, evidenciando que el sitio utiliza la infraestructura de Cloudflare como red de distribuci\u00f3n y protecci\u00f3n.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Adem\u00e1s, se identificaron las direcciones IP p\u00fablicas 216.24.57.7 y 216.24.57.251, asociadas al servicio alojado en Render. La respuesta fue catalogada como \u201cno autoritativa\u201d, lo cual significa que la informaci\u00f3n fue obtenida desde un servidor DNS intermedio o en cach\u00e9 y no directamente desde el servidor DNS principal del dominio. Esto es un comportamiento normal en consultas DNS realizadas desde equipos cliente.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>d. Escaneo de puertos<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Se utiliz\u00f3 el cuando nmap -F <a href=\"https:\/\/crmedica-colombia.onrender.com\/\">https:\/\/crmedica-colombia.onrender.com\/<\/a> para la realizaci\u00f3n de un escaneo b\u00e1sico de puertos con el comando Nmap sobre el dominio.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Figura 4<\/strong><\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"706\" height=\"254\" src=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-996.png\" alt=\"\" class=\"wp-image-88912\" srcset=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-996.png 706w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-996-300x108.png 300w\" sizes=\"auto, (max-width: 706px) 100vw, 706px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">La prueba realizada con nmap -F permiti\u00f3 identificar los puertos abiertos del dominio <em>crmedica-colombia.onrender.com<\/em>. El servidor respondi\u00f3 correctamente y se detectaron abiertos los puertos 80 (HTTP), 443 (HTTPS), 8080 y 8443, asociados a servicios web y conexiones seguras.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Adem\u00e1s, se evidenci\u00f3 que la mayor\u00eda de los puertos analizados se encuentran filtrados o sin respuesta, lo cual sugiere la implementaci\u00f3n de medidas de seguridad como firewalls o restricciones de acceso para proteger los servicios internos del servidor.<\/p>\n\n\n\n<h1 class=\"wp-block-heading\"><strong>2. DNS, WHOIS y certificados<\/strong><\/h1>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Objetivo General&nbsp;<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Realizar el an\u00e1lisis de informaci\u00f3n p\u00fablica de un sitio web mediante consultas DNS, WHOIS y certificados SSL\/TLS, con el fin de identificar su infraestructura, propietario y nivel de seguridad.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Objetivos Espec\u00edficos<\/strong>&nbsp;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">a. Consultar registros DNS<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">b. Realizar busqueda de WHOIS para obtener informaci\u00f3n del registrante<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">c. Analizar certificados SSL\/TLS de sitios web<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">d. Identificar subdominios y servicios asociados<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Herramientas Utilizadas<\/strong>&nbsp;<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>nslookup (types)<\/li>\n\n\n\n<li>WHOIS<\/li>\n\n\n\n<li>SSL, Checker, consulta comando puerto 443<\/li>\n\n\n\n<li>nslookup type = NS<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Desarrollo de las pruebas implementadas&nbsp;<\/strong><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>a. Consulta de registros DNS<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Anteriormente se hizo la consulta de nslookup con su respectivo resultado, en este apartado podremos ver entonces los diferentes tipos espec\u00edficos. Para recordar, el nslookup obtuvo este resultado:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Figura 5<\/strong><\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"567\" height=\"199\" src=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-997.png\" alt=\"\" class=\"wp-image-88913\" srcset=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-997.png 567w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-997-300x105.png 300w\" sizes=\"auto, (max-width: 567px) 100vw, 567px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Para la consulta de tipos espec\u00edficos, esto fue lo que se obtuvo:&nbsp;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Figura 6 (type A)<\/strong><\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"607\" height=\"200\" src=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-998.png\" alt=\"\" class=\"wp-image-88914\" srcset=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-998.png 607w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-998-300x99.png 300w\" sizes=\"auto, (max-width: 607px) 100vw, 607px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Figura 7 (type MX)<\/strong><\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"1006\" height=\"314\" src=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-999.png\" alt=\"\" class=\"wp-image-88915\" srcset=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-999.png 1006w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-999-300x94.png 300w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-999-768x240.png 768w\" sizes=\"auto, (max-width: 1006px) 100vw, 1006px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Figura 8 (type NS)<\/strong><br><\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"1005\" height=\"314\" src=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-1000.png\" alt=\"\" class=\"wp-image-88916\" srcset=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-1000.png 1005w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-1000-300x94.png 300w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-1000-768x240.png 768w\" sizes=\"auto, (max-width: 1005px) 100vw, 1005px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Figura 9 (type TXT)<\/strong><br><\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"1003\" height=\"315\" src=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-1001.png\" alt=\"\" class=\"wp-image-88917\" srcset=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-1001.png 1003w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-1001-300x94.png 300w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-1001-768x241.png 768w\" sizes=\"auto, (max-width: 1003px) 100vw, 1003px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Se realizaron consultas DNS de tipo A, MX, NS y TXT sobre el dominio <em>crmedica-colombia.onrender.com<\/em> utilizando la herramienta nslookup, con el fin de identificar informaci\u00f3n relacionada con direccionamiento IP, servidores de correo, servidores de nombres y registros de texto del dominio.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">En la consulta de <strong>tipo A<\/strong> se evidenci\u00f3 que el dominio resuelve correctamente hacia las direcciones IP p\u00fablicas 216.24.57.251 y 216.24.57.7, asociadas a la infraestructura de Render y protegidas mediante la red de distribuci\u00f3n de contenido Cloudflare. Adem\u00e1s, se identific\u00f3 el alias gcp-us-west1-1.origin.onrender.com.cdn.cloudflare.net, confirmando el uso de servicios CDN y balanceo de tr\u00e1fico.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Las consultas de <strong>tipo MX, NS y TXT<\/strong> no devolvieron registros espec\u00edficos configurados directamente para el dominio analizado. En su lugar, la respuesta mostr\u00f3 informaci\u00f3n relacionada con cloudflare.net, incluyendo el servidor principal ns1.cloudflare.net, lo que indica que el dominio utiliza la infraestructura DNS de Cloudflare para la administraci\u00f3n y resoluci\u00f3n de nombres.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Tambi\u00e9n se observ\u00f3 que las respuestas obtenidas fueron \u201cno autoritativas\u201d, lo cual significa que la informaci\u00f3n proviene de un servidor DNS intermedio o almacenado en cach\u00e9 y no directamente del servidor DNS autoritativo del dominio. En general, los resultados permiten concluir que el dominio se encuentra correctamente configurado y accesible a trav\u00e9s de servicios de hosting y protecci\u00f3n en la nube.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>b. Consulta WHOIS<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Para esta consulta se utiliz\u00f3 la p\u00e1gina web <a href=\"https:\/\/who.is\/\">https:\/\/who.is\/<\/a> ya que al usar Windows no se tiene por defecto el t\u00e9rmino \u201cwhois\u201d para ejecutar en CMD.&nbsp;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Figura 10<\/strong><\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"895\" height=\"484\" src=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-1002.png\" alt=\"\" class=\"wp-image-88918\" srcset=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-1002.png 895w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-1002-300x162.png 300w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-1002-768x415.png 768w\" sizes=\"auto, (max-width: 895px) 100vw, 895px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Figura 11<\/strong><\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"906\" height=\"687\" src=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-1003.png\" alt=\"\" class=\"wp-image-88919\" srcset=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-1003.png 906w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-1003-300x227.png 300w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-1003-768x582.png 768w\" sizes=\"auto, (max-width: 906px) 100vw, 906px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Figura 12<\/strong><\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"904\" height=\"566\" src=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-1004.png\" alt=\"\" class=\"wp-image-88920\" srcset=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-1004.png 904w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-1004-300x188.png 300w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-1004-768x481.png 768w\" sizes=\"auto, (max-width: 904px) 100vw, 904px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Al realizar la consulta WHOIS sobre el dominio <em>crmedica-colombia.onrender.com<\/em> no se obtuvo informaci\u00f3n p\u00fablica registrada del dominio. El sistema mostr\u00f3 el mensaje \u201cNo WHOIS data was found\u201d, indicando que no existen registros WHOIS disponibles directamente para esta direcci\u00f3n.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Esto ocurre porque <em>onrender.com<\/em> pertenece a la plataforma de hosting Render, y el subdominio <em>crmedica-colombia.onrender.com<\/em> no corresponde a un dominio registrado de forma independiente, sino a un subdominio administrado por el proveedor del servicio. Por esta raz\u00f3n, la informaci\u00f3n WHOIS del subdominio no se encuentra expuesta p\u00fablicamente como sucede con dominios propios registrados ante entidades oficiales.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">A pesar de no contar con informaci\u00f3n WHOIS espec\u00edfica, las consultas DNS permitieron identificar que el servicio utiliza infraestructura de Cloudflare y Render, resolviendo hacia las direcciones IP 216.24.57.7 y 216.24.57.251. Adem\u00e1s, el estado del servicio aparece como \u201cActive\u201d, lo que indica que el sitio contin\u00faa siendo accesible desde internet.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Figura 13<\/strong><\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"661\" height=\"834\" src=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-1005.png\" alt=\"\" class=\"wp-image-88921\" srcset=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-1005.png 661w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-1005-238x300.png 238w\" sizes=\"auto, (max-width: 661px) 100vw, 661px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Figura 14<\/strong><\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"668\" height=\"649\" src=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-1006.png\" alt=\"\" class=\"wp-image-88922\" srcset=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-1006.png 668w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-1006-300x291.png 300w\" sizes=\"auto, (max-width: 668px) 100vw, 668px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Como complemento del an\u00e1lisis WHOIS, se realiz\u00f3 una consulta sobre el dominio principal <em>onrender.com<\/em>, ya que el subdominio analizado no posee registro independiente. Los resultados evidenciaron que el dominio pertenece a Render Services, Inc. y se encuentra registrado mediante Amazon Registrar, Inc. desde el a\u00f1o 2015.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Asimismo, se identific\u00f3 el uso de servidores DNS de AWS Route 53, adem\u00e1s de pol\u00edticas de seguridad que restringen modificaciones y transferencias no autorizadas del dominio. Esta informaci\u00f3n confirma que la infraestructura del servicio web analizado se encuentra soportada sobre plataformas cloud reconocidas como Render, Amazon Web Services y Cloudflare.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>c. An\u00e1lisis de certificados SSL\/TLS<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Para el an\u00e1lisis de certificados se utilizaron dos diferentes formas de verificarlo, desde la p\u00e1gina web viendo el certificado usando el candado al lado de la direcci\u00f3n web, y tambi\u00e9n se utiliz\u00f3 la p\u00e1gina SSL Checker.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Figura 15<\/strong><\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"559\" height=\"688\" src=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-1007.png\" alt=\"\" class=\"wp-image-88923\" srcset=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-1007.png 559w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-1007-244x300.png 244w\" sizes=\"auto, (max-width: 559px) 100vw, 559px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Figura 16<\/strong><br><\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"747\" height=\"853\" src=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-1008.png\" alt=\"\" class=\"wp-image-88924\" srcset=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-1008.png 747w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-1008-263x300.png 263w\" sizes=\"auto, (max-width: 747px) 100vw, 747px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Durante la verificaci\u00f3n de certificados SSL\/TLS se evidenci\u00f3 que el sitio cuenta con un certificado digital v\u00e1lido y correctamente configurado. El certificado fue emitido para el dominio onrender.com por la entidad certificadora Google Trust Services, utilizando el emisor intermedio WE1, lo que garantiza la autenticidad y confiabilidad de la conexi\u00f3n segura HTTPS.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">El an\u00e1lisis mostr\u00f3 que el certificado es reconocido por los principales navegadores web y que la cadena de confianza (certificate chain) se encuentra correctamente instalada, incluyendo las autoridades WE1 y GTS Root R4. Asimismo, se verific\u00f3 que el hostname del sitio coincide correctamente con la informaci\u00f3n contenida en el certificado digital, evitando problemas de validaci\u00f3n o suplantaci\u00f3n de identidad.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">El certificado utiliza el algoritmo de firma ecdsa-with-SHA256, considerado actualmente un est\u00e1ndar seguro para conexiones cifradas modernas. Adem\u00e1s, la validez del certificado se encuentra activa desde el 28 de marzo de 2026 hasta el 26 de junio de 2026, garantizando que las comunicaciones entre el cliente y el servidor se realizan de manera cifrada y protegida contra interceptaciones.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Tambi\u00e9n se identific\u00f3 que la infraestructura utiliza servicios de Cloudflare, lo que contribuye a mejorar la seguridad, disponibilidad y protecci\u00f3n frente a ataques externos mediante mecanismos de proxy inverso, CDN y mitigaci\u00f3n de amenazas.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>d. Posibles riesgos<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Aunque el certificado SSL\/TLS se encuentra correctamente configurado, se identifican algunos posibles riesgos asociados a la infraestructura y configuraci\u00f3n del servicio:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Dependencia de servicios externos como Cloudflare y Render, lo que puede generar afectaciones en caso de fallos, ca\u00eddas o problemas de disponibilidad en dichas plataformas.<\/li>\n\n\n\n<li>El certificado tiene una vigencia relativamente corta, por lo que si no se renueva oportunamente podr\u00eda provocar advertencias de seguridad o interrupciones en el acceso HTTPS.<\/li>\n\n\n\n<li>La exposici\u00f3n de puertos adicionales como 8080 y 8443 podr\u00eda representar una superficie de ataque adicional si existen servicios mal configurados o vulnerables.<\/li>\n\n\n\n<li>El uso de subdominios p\u00fablicos en plataformas cloud puede facilitar actividades de reconocimiento por parte de atacantes, permitiendo identificar tecnolog\u00edas y proveedores utilizados por el servicio.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Aunque la conexi\u00f3n HTTPS protege la transmisi\u00f3n de datos, esto no garantiza por s\u00ed solo la seguridad de la aplicaci\u00f3n web frente a vulnerabilidades como inyecciones SQL, XSS o configuraciones inseguras.<\/p>\n\n\n\n<h2 class=\"wp-block-heading has-text-align-center\"><strong>OWASP Metodolog\u00eda&nbsp;<\/strong><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>A01: Broken Access Control (Control de Acceso Roto)<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Descripci\u00f3n:<\/strong> Ocurre cuando los usuarios pueden acceder a recursos sin la debida autorizaci\u00f3n.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"988\" height=\"303\" src=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-626.png\" alt=\"\" class=\"wp-image-87834\" srcset=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-626.png 988w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-626-300x92.png 300w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-626-768x236.png 768w\" sizes=\"auto, (max-width: 988px) 100vw, 988px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Posible an\u00e1lisis en el sitio:<\/strong> No se evidenci\u00f3 directamente acceso a paneles administrativos, sin embargo, al ser un sitio web en hosting gratuito, podr\u00eda existir riesgo si no se controlan correctamente rutas como \/admin o \/wp-admin.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Se utiliz\u00f3 la herramienta de l\u00ednea de comandos (CMD) con el siguiente comando:<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>A02: Cryptographic Failures (Fallas Criptogr\u00e1ficas)<\/strong><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Descripci\u00f3n<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Las fallas criptogr\u00e1ficas ocurren cuando la informaci\u00f3n sensible no est\u00e1 correctamente protegida mediante cifrado, lo que puede permitir su exposici\u00f3n o interceptaci\u00f3n por atacantes.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"72\" src=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-627-1024x72.png\" alt=\"\" class=\"wp-image-87835\" srcset=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-627-1024x72.png 1024w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-627-300x21.png 300w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-627-768x54.png 768w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-627.png 1101w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"401\" src=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-628-1024x401.png\" alt=\"\" class=\"wp-image-87836\" srcset=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-628-1024x401.png 1024w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-628-300x117.png 300w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-628-768x301.png 768w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-628.png 1361w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"547\" height=\"677\" src=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-629.png\" alt=\"\" class=\"wp-image-87837\" srcset=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-629.png 547w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-629-242x300.png 242w\" sizes=\"auto, (max-width: 547px) 100vw, 547px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Procedimiento realizado&nbsp;<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Para verificar el uso de cifrado en el sitio web, se realiz\u00f3:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Acceso al sitio desde el navegador verificando el protocolo HTTPS<\/li>\n\n\n\n<li>Inspecci\u00f3n del certificado SSL\/TLS desde el candado del navegador<\/li>\n\n\n\n<li>Validaci\u00f3n del puerto seguro (443) previamente identificado con Nmap<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>An\u00e1lisis de resultados<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>El sitio utiliza el protocolo:<\/li>\n\n\n\n<li>Se confirm\u00f3 que:\n<ul class=\"wp-block-list\">\n<li>El certificado SSL es <strong>v\u00e1lido<\/strong><\/li>\n\n\n\n<li>Emitido por <strong>ZeroSSL<\/strong><\/li>\n\n\n\n<li>La comunicaci\u00f3n est\u00e1 cifrada<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>A03: Injection<\/strong><\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"885\" height=\"91\" src=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-630.png\" alt=\"\" class=\"wp-image-87838\" srcset=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-630.png 885w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-630-300x31.png 300w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-630-768x79.png 768w\" sizes=\"auto, (max-width: 885px) 100vw, 885px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>An\u00e1lisis:<\/strong> No se evidencia sanitizaci\u00f3n en cliente.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Conclusi\u00f3n:<\/strong> Riesgo potencial de inyecci\u00f3n (dependiente del backend)<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>A04: Insecure Design (Dise\u00f1o Inseguro)<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Descripci\u00f3n:<\/strong> Problemas desde la arquitectura del sistema.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"903\" height=\"526\" src=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-631.png\" alt=\"\" class=\"wp-image-87839\" srcset=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-631.png 903w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-631-300x175.png 300w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-631-768x447.png 768w\" sizes=\"auto, (max-width: 903px) 100vw, 903px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"910\" height=\"557\" src=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-632.png\" alt=\"\" class=\"wp-image-87840\" srcset=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-632.png 910w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-632-300x184.png 300w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-632-768x470.png 768w\" sizes=\"auto, (max-width: 910px) 100vw, 910px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>An\u00e1lisis:<\/strong> El uso de hosting gratuito y subdominios indica una arquitectura b\u00e1sica con limitaciones de seguridad.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Riesgo:<\/strong> Falta de controles de seguridad desde el dise\u00f1o.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Mitigaci\u00f3n:<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Aplicar principios de dise\u00f1o seguro<\/li>\n\n\n\n<li>An\u00e1lisis de amenazas<\/li>\n\n\n\n<li>Uso de buenas pr\u00e1cticas desde el desarrollo<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>A05: Security Mis configuration (Mala Configuraci\u00f3n)<\/strong><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Descripci\u00f3n:<\/strong> Configuraciones incorrectas en servidores o aplicaciones.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"796\" height=\"118\" src=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-643.png\" alt=\"\" class=\"wp-image-87851\" srcset=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-643.png 796w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-643-300x44.png 300w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-643-768x114.png 768w\" sizes=\"auto, (max-width: 796px) 100vw, 796px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>An\u00e1lisis:<\/strong> Se detectaron puertos abiertos (80, 443, 2049), lo cual puede representar exposici\u00f3n de servicios.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"632\" height=\"127\" src=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-646.png\" alt=\"\" class=\"wp-image-87854\" srcset=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-646.png 632w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-646-300x60.png 300w\" sizes=\"auto, (max-width: 632px) 100vw, 632px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Riesgo:<\/strong> Acceso no autorizado a servicios.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Mitigaci\u00f3n:<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Cerrar puertos innecesarios<\/li>\n\n\n\n<li>Configurar correctamente el servidor<\/li>\n\n\n\n<li>Uso de firewalls<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"542\" src=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-651-1024x542.png\" alt=\"\" class=\"wp-image-87858\" srcset=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-651-1024x542.png 1024w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-651-300x159.png 300w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-651-768x407.png 768w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-651-390x205.png 390w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-651.png 1362w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"977\" height=\"712\" src=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-652.png\" alt=\"\" class=\"wp-image-87860\" srcset=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-652.png 977w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-652-300x219.png 300w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-652-768x560.png 768w\" sizes=\"auto, (max-width: 977px) 100vw, 977px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"712\" src=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-654-1024x712.png\" alt=\"\" class=\"wp-image-87862\" srcset=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-654-1024x712.png 1024w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-654-300x208.png 300w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-654-768x534.png 768w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-654-392x272.png 392w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-654-130x90.png 130w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-654.png 1029w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>A06: Vulnerable and Outdated Components<\/strong><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Descripci\u00f3n:<\/strong> La vulnerabilidad A06 hace referencia al uso de componentes, librer\u00edas, frameworks o tecnolog\u00edas desactualizadas o potencialmente vulnerables dentro de una aplicaci\u00f3n web. El uso de componentes sin actualizaci\u00f3n puede permitir la explotaci\u00f3n de vulnerabilidades conocidas p\u00fablicamente.&nbsp;<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"700\" height=\"878\" src=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-657.png\" alt=\"\" class=\"wp-image-87865\" srcset=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-657.png 700w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-657-239x300.png 239w\" sizes=\"auto, (max-width: 700px) 100vw, 700px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>An\u00e1lisis:<\/strong> Durante el reconocimiento de la aplicaci\u00f3n CRM se realiz\u00f3 una inspecci\u00f3n manual de los recursos cargados por el frontend mediante DevTools del navegador.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Se identific\u00f3 el uso de archivos JavaScript empaquetados y minimizados, entre ellos:<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"604\" height=\"95\" src=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-668.png\" alt=\"\" class=\"wp-image-87877\" srcset=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-668.png 604w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-668-300x47.png 300w\" sizes=\"auto, (max-width: 604px) 100vw, 604px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">La utilizaci\u00f3n de bundles minimizados dificulta parcialmente la identificaci\u00f3n directa de tecnolog\u00edas y versiones espec\u00edficas; sin embargo, evidencia el uso de componentes frontend modernos y dependencias externas cargadas din\u00e1micamente desde el navegador.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Adicionalmente, durante la revisi\u00f3n de encabezados HTTP se identific\u00f3 informaci\u00f3n relacionada con pol\u00edticas de acceso y configuraci\u00f3n del servidor, lo que podr\u00eda facilitar tareas de fingerprinting tecnol\u00f3gico por parte de un atacante.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Riesgo:<\/strong>&nbsp;<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Explotaci\u00f3n de vulnerabilidades conocidas en componentes desactualizados.<\/li>\n\n\n\n<li>Incremento de la superficie de ataque mediante librer\u00edas externas.<\/li>\n\n\n\n<li>Exposici\u00f3n de informaci\u00f3n t\u00e9cnica de la aplicaci\u00f3n.<\/li>\n\n\n\n<li>Riesgo de ejecuci\u00f3n de c\u00f3digo malicioso si existen dependencias vulnerables.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Mitigaci\u00f3n:<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Mantener actualizadas todas las dependencias y componentes del sistema.<\/li>\n\n\n\n<li>Implementar monitoreo continuo de vulnerabilidades (CVE).<\/li>\n\n\n\n<li>Eliminar librer\u00edas o m\u00f3dulos innecesarios.<\/li>\n\n\n\n<li>Reducir la exposici\u00f3n de informaci\u00f3n t\u00e9cnica mediante headers seguros.<\/li>\n\n\n\n<li>Realizar auditor\u00edas peri\u00f3dicas de componentes utilizados por la aplicaci\u00f3n.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>A07: Identification and Authentication Failures<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Descripci\u00f3n:<\/strong> La vulnerabilidad A07 hace referencia a fallas en los mecanismos de identificaci\u00f3n, autenticaci\u00f3n y gesti\u00f3n de sesiones de los usuarios. Estas fallas pueden permitir ataques de fuerza bruta, enumeraci\u00f3n de usuarios o accesos no autorizados.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"501\" height=\"759\" src=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-708.png\" alt=\"\" class=\"wp-image-87917\" srcset=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-708.png 501w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-708-198x300.png 198w\" sizes=\"auto, (max-width: 501px) 100vw, 501px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"480\" height=\"833\" src=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-709.png\" alt=\"\" class=\"wp-image-87918\" srcset=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-709.png 480w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-709-173x300.png 173w\" sizes=\"auto, (max-width: 480px) 100vw, 480px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>An\u00e1lisis:<\/strong> Durante las pruebas realizadas sobre el sistema de autenticaci\u00f3n del CRM se evidenciaron m\u00faltiples debilidades relacionadas con la validaci\u00f3n y protecci\u00f3n del proceso de inicio de sesi\u00f3n.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">El sistema diferencia los mensajes de error dependiendo de la credencial ingresada:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Cuando el usuario no existe, el sistema responde con:<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"609\" height=\"69\" src=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-710.png\" alt=\"\" class=\"wp-image-87919\" srcset=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-710.png 609w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-710-300x34.png 300w\" sizes=\"auto, (max-width: 609px) 100vw, 609px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Cuando el correo es v\u00e1lido pero la contrase\u00f1a es incorrecta, el sistema responde con:<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"607\" height=\"71\" src=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-713.png\" alt=\"\" class=\"wp-image-87931\" srcset=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-713.png 607w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-713-300x35.png 300w\" sizes=\"auto, (max-width: 607px) 100vw, 607px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Esto permite la enumeraci\u00f3n de usuarios, ya que un atacante puede identificar correos v\u00e1lidos dentro de la plataforma mediante las respuestas del sistema.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Adicionalmente, se observ\u00f3 que el formulario de autenticaci\u00f3n no implementa mecanismos adicionales de protecci\u00f3n como CAPTCHA, autenticaci\u00f3n multifactor (MFA) o limitaci\u00f3n de intentos fallidos de inicio de sesi\u00f3n.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Durante las pruebas realizadas, la aplicaci\u00f3n permiti\u00f3 m\u00faltiples intentos consecutivos de autenticaci\u00f3n sin bloqueo temporal ni restricciones visibles.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>Riesgo<\/strong><\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Enumeraci\u00f3n de usuarios v\u00e1lidos.<\/li>\n\n\n\n<li>Ataques de fuerza bruta.<\/li>\n\n\n\n<li>Acceso no autorizado a cuentas.<\/li>\n\n\n\n<li>Compromiso de credenciales.<\/li>\n\n\n\n<li>Secuestro o abuso de sesiones autenticadas.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Mitigaci\u00f3n:<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Implementar autenticaci\u00f3n multifactor (MFA).<\/li>\n\n\n\n<li>Configurar bloqueo temporal tras m\u00faltiples intentos fallidos.<\/li>\n\n\n\n<li>Implementar CAPTCHA o mecanismos anti-bot.<\/li>\n\n\n\n<li>Unificar mensajes de error para evitar enumeraci\u00f3n de usuarios.<\/li>\n\n\n\n<li>Aplicar pol\u00edticas robustas de contrase\u00f1as y monitoreo de accesos sospechosos.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>A08: Software and Data Integrity Failures<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Descripci\u00f3n<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">La vulnerabilidad A08 hace referencia a fallos en la verificaci\u00f3n de integridad del software y los datos. Ocurre cuando una aplicaci\u00f3n carga recursos externos (scripts, librer\u00edas, actualizaciones) sin comprobar que no hayan sido manipulados por un tercero. El mecanismo est\u00e1ndar de protecci\u00f3n es el atributo Subresource Integrity (SRI), que permite al navegador verificar que el contenido de un recurso externo coincide con un hash criptogr\u00e1fico esperado. Si este atributo no est\u00e1 presente, un atacante que comprometa el servidor externo puede inyectar c\u00f3digo malicioso que el sitio ejecutar\u00e1 sin advertencia alguna.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Herramientas Utilizadas<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u2022 &nbsp; &nbsp; &nbsp; Google Chrome DevTools \u2013 pesta\u00f1a Elements<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u2022 &nbsp; &nbsp; &nbsp; Google Chrome DevTools \u2013 pesta\u00f1a Network (filtro JS)<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u2022 &nbsp; &nbsp; &nbsp; B\u00fasqueda en c\u00f3digo fuente con Ctrl+U<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Objetivos Espec\u00edficos<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u2022 &nbsp; &nbsp; &nbsp; Verificar si los scripts JavaScript cargados por el sitio incluyen el atributo integrity (SRI).<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u2022 &nbsp; &nbsp; &nbsp; Identificar si existen scripts cargados desde CDN externos sin verificaci\u00f3n de integridad.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u2022 &nbsp; &nbsp; &nbsp; Determinar el riesgo asociado a la ausencia de controles de integridad en el frontend.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Desarrollo de las Pruebas Implementadas<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>a. Inspecci\u00f3n de scripts en la pesta\u00f1a Elements<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Se accedi\u00f3 al sitio crmedica-colombia.onrender.com y se abri\u00f3 la pesta\u00f1a Elements de Chrome DevTools. Se realiz\u00f3 una b\u00fasqueda del t\u00e9rmino &lt;script src= para identificar etiquetas de scripts externos con posible atributo integrity. La b\u00fasqueda arroj\u00f3 0 de 0 resultados, lo que indica que el sitio no incluye scripts externos con etiqueta &lt;script src= directamente en el HTML. La aplicaci\u00f3n utiliza un bundle generado din\u00e1micamente (arquitectura React\/Vite), donde los scripts se inyectan en tiempo de ejecuci\u00f3n.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Figura 33 B\u00fasqueda de &lt;script src= en DevTools \u2013 0 resultados encontrados<\/strong><\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"594\" height=\"955\" src=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-714.png\" alt=\"\" class=\"wp-image-87933\" srcset=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-714.png 594w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-714-187x300.png 187w\" sizes=\"auto, (max-width: 594px) 100vw, 594px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>An\u00e1lisis de Resultados<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Las pruebas realizadas sobre el sitio crmedica-colombia.onrender.com evidenciaron la ausencia total del atributo Subresource Integrity (SRI) en los recursos JavaScript cargados por la aplicaci\u00f3n. Si bien el sitio utiliza un bundle interno generado por Vite\/React (lo que reduce parcialmente el riesgo de scripts CDN externos), la falta de cualquier mecanismo de verificaci\u00f3n de integridad representa una debilidad en la cadena de suministro de software.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Adicionalmente, la arquitectura de bundle \u00fanico sin SRI implica que cualquier modificaci\u00f3n no autorizada en el archivo servido por el servidor no ser\u00eda detectada por el navegador del usuario, facilitando potenciales ataques de tipo supply chain.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Riesgos Identificados<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u2022 &nbsp; &nbsp; &nbsp; Ausencia del atributo integrity en scripts JavaScript: el navegador no puede verificar que el contenido no haya sido alterado.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u2022 &nbsp; &nbsp; &nbsp; Riesgo de ataques de cadena de suministro (supply chain): si el servidor de Render o Cloudflare es comprometido, el c\u00f3digo malicioso se ejecutar\u00eda en todos los clientes.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u2022 &nbsp; &nbsp; &nbsp; Falta de pol\u00edtica de Content Security Policy (CSP) estricta que restrinja la ejecuci\u00f3n de scripts no autorizados.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u2022 &nbsp; &nbsp; &nbsp; Los bundles minificados dificultan la auditor\u00eda manual del c\u00f3digo cargado.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Mitigaci\u00f3n<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u2022 &nbsp; &nbsp; &nbsp; Implementar el atributo integrity con hash SHA-384 o SHA-512 en todos los scripts externos cargados desde CDN.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u2022 &nbsp; &nbsp; &nbsp; Configurar una pol\u00edtica Content Security Policy (CSP) estricta que bloquee la ejecuci\u00f3n de scripts no incluidos en la lista blanca.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u2022 &nbsp; &nbsp; &nbsp; Utilizar herramientas como SRI Hash Generator (https:\/\/www.srihash.org\/) para generar los hashes de integridad correspondientes.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u2022 &nbsp; &nbsp; &nbsp; Revisar peri\u00f3dicamente las dependencias del proyecto mediante herramientas como npm audit o Snyk.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u2022 &nbsp; &nbsp; &nbsp; Considerar el uso de Trusted Types API para prevenir inyecciones de scripts en tiempo de ejecuci\u00f3n.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>A09: Security Logging and Monitoring Failures<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Descripci\u00f3n<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">La vulnerabilidad A09 hace referencia a la ausencia o deficiencia en los mecanismos de registro (logging) y monitoreo de eventos de seguridad dentro de una aplicaci\u00f3n web. Sin un registro adecuado de eventos como intentos de acceso fallidos, errores del servidor, rutas no autorizadas y actividades an\u00f3malas, los administradores del sistema son incapaces de detectar, investigar o responder oportunamente ante incidentes de seguridad. Esta categor\u00eda tambi\u00e9n incluye la exposici\u00f3n involuntaria de informaci\u00f3n t\u00e9cnica sensible a trav\u00e9s de mensajes de error o cabeceras HTTP.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Herramientas Utilizadas<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u2022 &nbsp; &nbsp; &nbsp; Google Chrome \u2013 navegaci\u00f3n a rutas inexistentes<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u2022 &nbsp; &nbsp; &nbsp; Chrome DevTools \u2013 pesta\u00f1a Network (filtro All)<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u2022 &nbsp; &nbsp; &nbsp; Inspecci\u00f3n de Response Headers en DevTools<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Objetivos Espec\u00edficos<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u2022 &nbsp; &nbsp; &nbsp; Verificar el comportamiento del servidor ante rutas inv\u00e1lidas o no existentes.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u2022 &nbsp; &nbsp; &nbsp; Analizar los c\u00f3digos de respuesta HTTP devueltos ante solicitudes a rutas inexistentes.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u2022 &nbsp; &nbsp; &nbsp; Inspeccionar los encabezados de respuesta HTTP en busca de informaci\u00f3n t\u00e9cnica expuesta.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u2022 &nbsp; &nbsp; &nbsp; Determinar si el sistema implementa respuestas de error estandarizadas que dificulten el reconocimiento por parte de atacantes.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Desarrollo de las Pruebas Implementadas<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>a. Inspecci\u00f3n de Response Headers \u2013 Recurso principal<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Se inspeccionaron los encabezados de respuesta del recurso principal index-6fsZL0J0.js mediante la pesta\u00f1a Network de Chrome DevTools. Los encabezados revelan informaci\u00f3n relevante sobre la infraestructura del servidor: el campo Server expone el valor cloudflare, lo que permite a un atacante identificar el proveedor de CDN\/proxy utilizado. Se observ\u00f3 la presencia de los headers de seguridad Strict-Transport-Security, X-Content-Type-Options: nosniff y X-Frame-Options: SAMEORIGIN, lo cual representa buenas pr\u00e1cticas de configuraci\u00f3n. Sin embargo, la exposici\u00f3n del campo Server con el valor del proveedor constituye una filtraci\u00f3n de informaci\u00f3n t\u00e9cnica que facilita tareas de reconocimiento.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Figura 35 Response Headers del recurso principal \u2013 Server: cloudflare expuesto<\/strong><\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"350\" height=\"623\" src=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-715.png\" alt=\"\" class=\"wp-image-87937\" srcset=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-715.png 350w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-715-169x300.png 169w\" sizes=\"auto, (max-width: 350px) 100vw, 350px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>b. Comportamiento ante rutas inexistentes<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Se realizaron solicitudes a rutas inexistentes del sitio, incluyendo \/ruta-que-no-existe, \/admin y \/api. En todos los casos, el servidor devolvi\u00f3 un Status Code 200 OK en lugar del c\u00f3digo de error esperado (404 Not Found), redirigiendo al usuario a la interfaz de login de la aplicaci\u00f3n. Este comportamiento es propio de aplicaciones de p\u00e1gina \u00fanica (SPA) que manejan el enrutamiento en el frontend, pero implica que el servidor no registra ni diferencia entre rutas v\u00e1lidas e inv\u00e1lidas, dificultando la detecci\u00f3n de intentos de enumeraci\u00f3n de rutas o reconocimiento por parte de atacantes.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Figura 36 Solicitud a ruta inexistente retorna Status 200 OK en lugar de 404<\/strong><\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"545\" height=\"739\" src=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-716.png\" alt=\"\" class=\"wp-image-87941\" srcset=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-716.png 545w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-716-221x300.png 221w\" sizes=\"auto, (max-width: 545px) 100vw, 545px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>An\u00e1lisis de Resultados<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">El an\u00e1lisis de los mecanismos de logging y monitoreo del sitio crmedica-colombia.onrender.com revel\u00f3 dos hallazgos principales. En primer lugar, el servidor expone el campo Server: cloudflare en todos sus encabezados de respuesta, proporcionando a posibles atacantes informaci\u00f3n sobre la infraestructura tecnol\u00f3gica utilizada. En segundo lugar, el sitio responde con c\u00f3digo HTTP 200 OK ante cualquier ruta inv\u00e1lida, redirigiendo siempre al login, lo que impide distinguir a nivel de servidor entre peticiones leg\u00edtimas y actividad maliciosa de reconocimiento.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Riesgos Identificados<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u2022 &nbsp; &nbsp; &nbsp; Exposici\u00f3n del campo Server: cloudflare en headers HTTP facilita la identificaci\u00f3n de la infraestructura por parte de atacantes.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u2022 &nbsp; &nbsp; &nbsp; El c\u00f3digo de respuesta 200 OK ante rutas inexistentes impide detectar intentos de enumeraci\u00f3n de rutas y directorios.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u2022 &nbsp; &nbsp; &nbsp; Sin diferenciaci\u00f3n de respuestas HTTP, los intentos de reconocimiento automatizado (scanners, bots) no generan alertas distinguibles.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u2022 &nbsp; &nbsp; &nbsp; La ausencia de evidencia de logging centralizado dificulta la investigaci\u00f3n forense ante un incidente de seguridad.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u2022 &nbsp; &nbsp; &nbsp; No se observan mecanismos visibles de rate limiting o detecci\u00f3n de comportamiento an\u00f3malo en las respuestas del servidor.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Mitigaci\u00f3n<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u2022 &nbsp; &nbsp; &nbsp; Configurar el servidor para devolver c\u00f3digos HTTP correctos (404, 403) ante rutas no existentes o no autorizadas, incluso en arquitecturas SPA.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u2022 &nbsp; &nbsp; &nbsp; Eliminar o reemplazar el header Server por un valor gen\u00e9rico que no revele el proveedor de infraestructura.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u2022 &nbsp; &nbsp; &nbsp; Implementar un sistema de logging centralizado (SIEM) que registre accesos, errores y eventos de seguridad.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u2022 &nbsp; &nbsp; &nbsp; Establecer alertas autom\u00e1ticas ante patrones de acceso an\u00f3malos como m\u00faltiples intentos a rutas inexistentes en corto tiempo.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u2022 &nbsp; &nbsp; &nbsp; Integrar herramientas de monitoreo como Cloudflare Analytics, Datadog o similares para visibilidad en tiempo real.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u2022 &nbsp; &nbsp; &nbsp; Implementar el header X-Powered-By oculto para no revelar tecnolog\u00edas del backend.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>A10: Server-Side Request Forgery (SSRF)<\/strong><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Descripci\u00f3n<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">La vulnerabilidad A10 hace referencia a ataques de tipo Server-Side Request Forgery (SSRF), en los que un atacante logra que el servidor realice solicitudes HTTP hacia destinos arbitrarios, incluyendo recursos internos de la infraestructura que normalmente no ser\u00edan accesibles desde el exterior. Esta vulnerabilidad ocurre cuando la aplicaci\u00f3n acepta URLs proporcionadas por el usuario y las procesa en el backend sin una validaci\u00f3n o restricci\u00f3n adecuada. En entornos cloud, el objetivo m\u00e1s cr\u00edtico de un ataque SSRF es el servicio de metadatos de la instancia (169.254.169.254), que puede revelar credenciales, tokens de acceso y configuraci\u00f3n interna de la infraestructura.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Herramientas Utilizadas<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u2022 &nbsp; &nbsp; &nbsp; Navegador web Google Chrome<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u2022 &nbsp; &nbsp; &nbsp; Chrome DevTools \u2013 pesta\u00f1a Network (filtro Fetch\/XHR)<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u2022 &nbsp; &nbsp; &nbsp; Formulario de registro de productos del CRM analizado<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>a. Reconocimiento del panel de control<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Se accedi\u00f3 al panel de control del CRM Respira CRM Colombia con credenciales de prueba. El dashboard mostr\u00f3 informaci\u00f3n comercial sensible incluyendo m\u00e9tricas de ventas, prospectos activos, clientes y \u00f3rdenes de servicio. Se identificaron los m\u00f3dulos disponibles: Prospectos, Clientes, Productos, Cotizaciones y Ventas, los cuales fueron revisados en busca de funcionalidades que acepten URLs externas.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Figura 37 Panel de control del CRM \u2013 m\u00f3dulos identificados para an\u00e1lisis SSRF<\/strong><\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"844\" height=\"422\" src=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-717.png\" alt=\"\" class=\"wp-image-87943\" srcset=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-717.png 844w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-717-300x150.png 300w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-717-768x384.png 768w\" sizes=\"auto, (max-width: 844px) 100vw, 844px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>b. Identificaci\u00f3n del vector de ataque en m\u00f3dulo de Productos<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Al acceder al m\u00f3dulo Productos y seleccionar &#8220;Registrar Nuevo Producto&#8221;, se identific\u00f3 un campo denominado &#8220;O USAR URL EXTERNA (PERMANENCIA TOTAL)&#8221; que permite al usuario ingresar una URL de imagen que el servidor procesar\u00e1 para asociarla al producto. Este campo representa un vector de ataque SSRF directo, ya que la URL ingresada es procesada por el backend del servidor para obtener el recurso externo.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Figura 38 Formulario de registro de producto con campo de URL externa identificado<\/strong><\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"717\" height=\"563\" src=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-718.png\" alt=\"\" class=\"wp-image-87944\" srcset=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-718.png 717w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-718-300x236.png 300w\" sizes=\"auto, (max-width: 717px) 100vw, 717px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>c. Revisi\u00f3n de otros formularios del sistema<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Se revisaron los dem\u00e1s formularios del CRM: Registrar Nuevo Cliente y Generaci\u00f3n de Cotizaci\u00f3n. El formulario de clientes contiene campos de texto est\u00e1ndar (nombre, NIT, tel\u00e9fono, email, direcci\u00f3n) sin campos de URL. El formulario de cotizaciones permite seleccionar clientes y productos del inventario. Ninguno de estos formularios present\u00f3 campos de URL adicionales, confirmando que el vector principal de SSRF se encuentra en el m\u00f3dulo de Productos.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Formulario de registro de cliente \u2013 sin campos de URL externa<\/strong><\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"617\" height=\"480\" src=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-719.png\" alt=\"\" class=\"wp-image-87946\" srcset=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-719.png 617w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-719-300x233.png 300w\" sizes=\"auto, (max-width: 617px) 100vw, 617px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Formulario de cotizaci\u00f3n \u2013 sin campos de URL externa<\/strong><\/p>\n\n\n\n<figure class=\"wp-block-image size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"717\" height=\"583\" src=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-720.png\" alt=\"\" class=\"wp-image-87947\" style=\"width:717px;height:auto\" srcset=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-720.png 717w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-720-300x244.png 300w\" sizes=\"auto, (max-width: 717px) 100vw, 717px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Prueba de explotaci\u00f3n SSRF con direcci\u00f3n de metadatos AWS<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Para confirmar la vulnerabilidad SSRF, se ingres\u00f3 en el campo de URL externa del formulario de productos la direcci\u00f3n del servicio de metadatos de instancia de AWS: http:\/\/169.254.169.254\/latest\/meta-data\/. Esta direcci\u00f3n es inaccesible desde el exterior pero accesible desde el servidor si este se ejecuta en infraestructura cloud de Amazon Web Services.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">El producto fue guardado exitosamente con el nombre &#8220;Owasp&#8221; para identificar la prueba. El resultado mostr\u00f3 el producto creado con la imagen en blanco (sin carga), lo que indica que el servidor intent\u00f3 realizar la solicitud HTTP a la direcci\u00f3n interna pero no pudo obtener el contenido. Crucialmente, en la pesta\u00f1a Network de DevTools se observ\u00f3 la petici\u00f3n a meta-data\/ con estado &#8220;(pendiente)&#8221;, confirmando que el backend proces\u00f3 la URL y realiz\u00f3 la solicitud hacia la direcci\u00f3n interna antes de que la conexi\u00f3n expirara.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Producto &#8220;Owasp&#8221; creado con imagen en blanco \u2013 servidor intent\u00f3 acceder a metadatos<\/strong><\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"419\" height=\"486\" src=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-721.png\" alt=\"\" class=\"wp-image-87948\" srcset=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-721.png 419w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-721-259x300.png 259w\" sizes=\"auto, (max-width: 419px) 100vw, 419px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Network DevTools \u2013 petici\u00f3n a meta-data\/ con estado pendiente confirma SSRF<\/strong><\/p>\n\n\n\n<figure class=\"wp-block-image size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"597\" height=\"834\" src=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-722.png\" alt=\"\" class=\"wp-image-87949\" style=\"width:597px;height:auto\" srcset=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-722.png 597w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-722-215x300.png 215w\" sizes=\"auto, (max-width: 597px) 100vw, 597px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>An\u00e1lisis de Resultados<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">La prueba realizada confirm\u00f3 la existencia de una vulnerabilidad SSRF activa en el m\u00f3dulo de Productos del CRM crmedica-colombia.onrender.com. El campo &#8220;O USAR URL EXTERNA (PERMANENCIA TOTAL)&#8221; del formulario de registro de productos permite al usuario proporcionar una URL arbitraria que el servidor procesa sin validaci\u00f3n ni restricci\u00f3n de destino.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">La petici\u00f3n a http:\/\/169.254.169.254\/latest\/meta-data\/ qued\u00f3 en estado pendiente en la red, lo que indica que el servidor realiz\u00f3 efectivamente la solicitud hacia la direcci\u00f3n interna de metadatos de AWS antes de que la conexi\u00f3n expirara por timeout. En un escenario real de ataque, si el servidor tiene acceso a este endpoint (lo cual es frecuente en instancias EC2 de AWS sin IMDSv2 habilitado), un atacante podr\u00eda obtener credenciales temporales de IAM, tokens de seguridad y configuraci\u00f3n interna de la infraestructura cloud.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Riesgos Identificados<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u2022 &nbsp; &nbsp; &nbsp; Vulnerabilidad SSRF confirmada: el servidor procesa URLs externas proporcionadas por el usuario sin validaci\u00f3n de destino.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u2022 &nbsp; &nbsp; &nbsp; Exposici\u00f3n potencial del servicio de metadatos de AWS (169.254.169.254), que puede revelar credenciales IAM temporales y configuraci\u00f3n interna.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u2022 &nbsp; &nbsp; &nbsp; Posibilidad de escaneo de puertos internos y enumeraci\u00f3n de servicios de la red privada del proveedor cloud.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u2022 &nbsp; &nbsp; &nbsp; Riesgo de acceso a servicios internos no expuestos p\u00fablicamente (bases de datos, APIs internas, paneles de administraci\u00f3n).<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u2022 &nbsp; &nbsp; &nbsp; En caso de comprometer credenciales IAM mediante SSRF, un atacante podr\u00eda escalar privilegios y tomar control de recursos cloud completos.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u2022 &nbsp; &nbsp; &nbsp; La funcionalidad de URL externa no tiene restricci\u00f3n de esquemas, permitiendo el uso de protocolos como file:\/\/, dict:\/\/, gopher:\/\/ que ampl\u00edan la superficie de ataque.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Mitigaci\u00f3n<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u2022 &nbsp; &nbsp; &nbsp; Implementar una lista blanca (allowlist) de dominios permitidos para el campo de URL externa, rechazando cualquier dominio no autorizado.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u2022 &nbsp; &nbsp; &nbsp; Bloquear expl\u00edcitamente el acceso a rangos de IP privadas y de metadatos cloud (169.254.0.0\/16, 10.0.0.0\/8, 172.16.0.0\/12, 192.168.0.0\/16) en las solicitudes salientes del servidor.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u2022 &nbsp; &nbsp; &nbsp; Habilitar IMDSv2 (Instance Metadata Service v2) en la infraestructura AWS para requerir tokens de sesi\u00f3n en solicitudes al servicio de metadatos, mitigando el impacto de SSRF.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u2022 &nbsp; &nbsp; &nbsp; Procesar im\u00e1genes de productos en el frontend o mediante un servicio intermediario aislado que no tenga acceso a la red interna.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u2022 &nbsp; &nbsp; &nbsp; Restringir los esquemas de URL permitidos \u00fanicamente a https:\/\/ y bloquear file:\/\/, dict:\/\/, gopher:\/\/, ftp:\/\/ y otros protocolos.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u2022 &nbsp; &nbsp; &nbsp; Implementar un proxy de salida controlado para todas las solicitudes HTTP del servidor con reglas de filtrado estrictas.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u2022 &nbsp; &nbsp; &nbsp; Realizar validaci\u00f3n y sanitizaci\u00f3n de URLs en el backend antes de procesar cualquier solicitud.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Conclusiones -Desarrollo de un CRM m\u00e9dico utilizando inteligencia artificial y tecnolog\u00edas cloud modernas<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">El desarrollo del CRM utilizando IA Studio permiti\u00f3 demostrar c\u00f3mo la inteligencia artificial puede acelerar significativamente el desarrollo de aplicaciones web modernas. La integraci\u00f3n con Supabase facilit\u00f3 la administraci\u00f3n de bases de datos y autenticaci\u00f3n, mientras que GitHub y Render permitieron desplegar la aplicaci\u00f3n de forma r\u00e1pida y eficiente.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Adem\u00e1s, la soluci\u00f3n de errores relacionados con login, sesiones y recuperaci\u00f3n de contrase\u00f1as fortaleci\u00f3 el sistema y permiti\u00f3 comprender la importancia de las configuraciones cloud y la seguridad en aplicaciones modernas.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Este proyecto evidencia que la inteligencia artificial se est\u00e1 convirtiendo en una herramienta fundamental dentro del desarrollo de software, permitiendo construir aplicaciones m\u00e1s r\u00e1pidas, escalables y eficientes.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Autores:<\/strong> <a href=\"https:\/\/niixer.com\/index.php\/2026\/05\/19\/automatizacion-del-desarrollo-web-creando-un-crm-con-ia-studio\/\" type=\"link\" id=\"https:\/\/niixer.com\/?s=Ana+Catalina+Parra+Arias\">Ana Catalina Parra Arias<\/a> &#8211; <a href=\"https:\/\/niixer.com\/?s=Gina+Marcela+Acosta+Ruiz\" type=\"link\" id=\"https:\/\/niixer.com\/?s=Gina+Marcela+Acosta+Ruiz\">Gina <\/a><a href=\"https:\/\/niixer.com\/index.php\/2026\/05\/19\/automatizacion-del-desarrollo-web-creando-un-crm-con-ia-studio\/\" type=\"link\" id=\"https:\/\/niixer.com\/?s=Gina+Marcela+Acosta+Ruiz\">Marcela <\/a><a href=\"https:\/\/niixer.com\/?s=Gina+Marcela+Acosta+Ruiz\" type=\"link\" id=\"https:\/\/niixer.com\/?s=Gina+Marcela+Acosta+Ruiz\">Acosta Ruiz<\/a> &#8211; <a href=\"https:\/\/niixer.com\/index.php\/2026\/05\/19\/automatizacion-del-desarrollo-web-creando-un-crm-con-ia-studio\/\" type=\"link\" id=\"https:\/\/niixer.com\/index.php\/author\/nelson42\/\">Nelson Stiven Otavo Paredes<\/a>&#8211;<a href=\"https:\/\/niixer.com\/?s=Juan+Sebastian+Polanco+Santofimio#google_vignette\" type=\"link\" id=\"https:\/\/niixer.com\/?s=Juan+Sebastian+Polanco+Santofimio#google_vignette\">Juan Sebastian Polanco Santofimio<\/a><br><strong>Editor:<\/strong> <a href=\"https:\/\/niixer.com\/?s=Carlos+Iv%C3%A1n+Pinz%C3%B3n+Romero\" type=\"link\" id=\"https:\/\/niixer.com\/?s=Carlos+Iv%C3%A1n+Pinz%C3%B3n+Romero\">Magister Ingeniero Carlos Iv\u00e1n Pinz\u00f3n Romero<\/a><br><strong>C\u00f3digo:<\/strong> <a href=\"https:\/\/niixer.com\/?s=UCHEG1-9\" type=\"link\" id=\"https:\/\/niixer.com\/?s=UCHEG1-9\">UCHEG1-9<\/a><br><strong>Universidad:<\/strong> <a href=\"https:\/\/niixer.com\/?s=Universidad+Central\" type=\"link\" id=\"https:\/\/niixer.com\/?s=Universidad+Central\">Universidad Central<\/a><\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>FUENTES:<\/strong><\/h3>\n\n\n\n<pre class=\"wp-block-preformatted\">Chirou, A. (2023, 29 de diciembre). <br>Gu\u00eda de hacking y pentesting - Cap\u00edtulo 2: Herramientas para pentesters. https:\/\/achirou.com\/guia-de-hacking-y-pentesting-capitulo-2-herramientas-para-pentesters\/<br><br>Chirou, A. (2024, 1 de enero). Gu\u00eda de hacking y pentesting - Cap\u00edtulo 3: Nmap reconocimiento y enumeraci\u00f3n. https:\/\/achirou.com\/guia-de-hacking-y-pentesting-capitulo-3-nmap-reconocimiento-y-enumeracion\/<br><br>Chirou, A. (2024, 22 de noviembre). Linux para hackers #18: Comandos de red. https:\/\/achirou.com\/linux-para-hackers-18-comandos-de-red\/<br>DC Seguridad. (s.f.). Pentesting paso a paso: m\u00e1quinas TryHackMe. DCSeguridad. https:\/\/dcseguridad.es\/tag\/pentesting\/<br><br>Instituto Nacional de Ciberseguridad (INCIBE-CERT). (2023). Estudio de herramientas para la actividad de reconocimiento. https:\/\/www.incibe.es\/sites\/default\/files\/2023-08\/INCIBE-CERT_ESTUDIO_DE_HERRAMIENTAS_DE_RECONOCIMIENTO_2023_v1.0.pdf<br><br>Paramissuperiores. (2025, 26 de noviembre). Nmap: Gu\u00eda completa 2025 \u2013 Tutorial de comandos, escaneo de puertos y hacking \u00e9tico.<br><br> https:\/\/paramissuperiores.es\/2025\/11\/26\/nmap-tutorial-comandos-escaneo-puertos\/<br>Revista de Seguridad UNAM. (s.f.). Pruebas de penetraci\u00f3n para principiantes: 5 herramientas para empezar. Universidad Nacional Aut\u00f3noma de M\u00e9xico. <br><br>https:\/\/revista.seguridad.unam.mx\/print\/2233Viafirma. (2025, 10 de noviembre). Hacking \u00e9tico: identificaci\u00f3n de servicios con nmap.<br><br> https:\/\/www.viafirma.com\/es\/identificacion-de-servicios-con-nmap\/<br>WeLiveSecurity. (s.f.). Herramientas de pentesting para principiantes. ESET. <br><br>https:\/\/www.welivesecurity.com\/es\/recursos-herramientas\/herramientas-pentesting-para-principiantes\/onrender.com WHOIS Domain Name Lookup - Who.is. (2023). Who.Is. https:\/\/who.is\/whois\/onrender.com<br><br>SSL Checker. (2026). Sslshopper.Com. https:\/\/www.sslshopper.com\/ssl-checker.html#hostname=https:\/\/crmedica-colombia.onrender.com<br>OWASP Foundation. (2021). OWASP Top 10: The ten most critical web application security risks.<br> https:\/\/owasp.org\/www-project-top-ten\/<br>OWASP Foundation. (s.f.). Server-Side Request Forgery Prevention Cheat Sheet.<br> https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Server_Side_Request_Forgery_Prevention_Cheat_Sheet.html<br>OWASP Foundation. (s.f.). Content Security Policy Cheat Sheet.<br> https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Content_Security_Policy_Cheat_Sheet.html<br>Nmap Project. (s.f.). Nmap Reference Guide.<br> https:\/\/nmap.org\/book\/man.html<br>Cloudflare. (s.f.). What is DNS?<br> https:\/\/www.cloudflare.com\/learning\/dns\/what-is-dns\/<br>Cloudflare. (s.f.). What is SSL\/TLS?<br> https:\/\/www.cloudflare.com\/learning\/ssl\/what-is-ssl\/<br><br><br><\/pre>\n\n\n\n<pre class=\"wp-block-preformatted\"><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Tema: Aprende c\u00f3mo crear y desplegar un CRM moderno utilizando IA Studio, Supabase, GitHub y Render paso a paso. Asimismo, descubre con el Vibe Coding y la inteligencia artificial permiten agilizar el desarrollo web, automatizar procesos y construir aplicaciones modernas de manera m\u00e1s r\u00e1pida y eficiente.| Tiempo de lectura estimado:Seguir Leyendo<\/p>\n","protected":false},"author":123,"featured_media":86933,"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":[3632,4557,4547],"tags":[4593,3572,747,1991,4588],"class_list":["post-86561","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-automatizacion","category-hacking-etico","category-vibe-coding","tag-github-y-render-el-objetivo-principal-fue-demostrar-como-las-tecnologias-de-inteligencia-artificial-pueden-optimizar-el-desarrollo-web","tag-inteligencia-artificial-ia","tag-postgresql","tag-render","tag-supabase"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.7 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Implementaci\u00f3n de un CRM inteligente usando IA Studio y Render<\/title>\n<meta name=\"description\" content=\"Aprende c\u00f3mo crear y desplegar un CRM moderno utilizando IA Studio, Supabase, GitHub y Render paso a paso.\" \/>\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\/automatizacion-del-desarrollo-web-creando-un-crm-con-ia-studio\/\" \/>\n<meta property=\"og:locale\" content=\"es_ES\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Implementaci\u00f3n de un CRM inteligente usando IA Studio y Render\" \/>\n<meta property=\"og:description\" content=\"Aprende c\u00f3mo crear y desplegar un CRM moderno utilizando IA Studio, Supabase, GitHub y Render paso a paso.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/niixer.com\/index.php\/2026\/05\/19\/automatizacion-del-desarrollo-web-creando-un-crm-con-ia-studio\/\" \/>\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-19T16:25:12+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-05-27T01:03:05+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/konkapo-crm-10207454-scaled.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"2560\" \/>\n\t<meta property=\"og:image:height\" content=\"2560\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Gina Marcela Acosta Ruiz\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Escrito por\" \/>\n\t<meta name=\"twitter:data1\" content=\"Gina Marcela Acosta Ruiz\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tiempo de lectura\" \/>\n\t<meta name=\"twitter:data2\" content=\"44 minutos\" \/>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Implementaci\u00f3n de un CRM inteligente usando IA Studio y Render","description":"Aprende c\u00f3mo crear y desplegar un CRM moderno utilizando IA Studio, Supabase, GitHub y Render paso a paso.","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\/automatizacion-del-desarrollo-web-creando-un-crm-con-ia-studio\/","og_locale":"es_ES","og_type":"article","og_title":"Implementaci\u00f3n de un CRM inteligente usando IA Studio y Render","og_description":"Aprende c\u00f3mo crear y desplegar un CRM moderno utilizando IA Studio, Supabase, GitHub y Render paso a paso.","og_url":"https:\/\/niixer.com\/index.php\/2026\/05\/19\/automatizacion-del-desarrollo-web-creando-un-crm-con-ia-studio\/","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-19T16:25:12+00:00","article_modified_time":"2026-05-27T01:03:05+00:00","og_image":[{"width":2560,"height":2560,"url":"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/konkapo-crm-10207454-scaled.jpg","type":"image\/jpeg"}],"author":"Gina Marcela Acosta Ruiz","twitter_card":"summary_large_image","twitter_misc":{"Escrito por":"Gina Marcela Acosta Ruiz","Tiempo de lectura":"44 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/niixer.com\/index.php\/2026\/05\/19\/automatizacion-del-desarrollo-web-creando-un-crm-con-ia-studio\/#article","isPartOf":{"@id":"https:\/\/niixer.com\/index.php\/2026\/05\/19\/automatizacion-del-desarrollo-web-creando-un-crm-con-ia-studio\/"},"author":{"name":"Gina Marcela Acosta Ruiz","@id":"https:\/\/niixer.com\/#\/schema\/person\/0d4ccc11d22f36958e02093989d8aa49"},"headline":"Automatizaci\u00f3n del desarrollo web: creando un CRM con IA Studio","datePublished":"2026-05-19T16:25:12+00:00","dateModified":"2026-05-27T01:03:05+00:00","mainEntityOfPage":{"@id":"https:\/\/niixer.com\/index.php\/2026\/05\/19\/automatizacion-del-desarrollo-web-creando-un-crm-con-ia-studio\/"},"wordCount":6477,"publisher":{"@id":"https:\/\/niixer.com\/#organization"},"image":{"@id":"https:\/\/niixer.com\/index.php\/2026\/05\/19\/automatizacion-del-desarrollo-web-creando-un-crm-con-ia-studio\/#primaryimage"},"thumbnailUrl":"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/konkapo-crm-10207454-scaled.jpg","keywords":["GitHub y Render. El objetivo principal fue demostrar c\u00f3mo las tecnolog\u00edas de inteligencia artificial pueden optimizar el desarrollo web","Inteligencia Artificial (IA)","postgreSQL","render","Supabase"],"articleSection":["Automatizaci\u00f3n","Hacking \u00c9tico","Vibe Coding"],"inLanguage":"es"},{"@type":"WebPage","@id":"https:\/\/niixer.com\/index.php\/2026\/05\/19\/automatizacion-del-desarrollo-web-creando-un-crm-con-ia-studio\/","url":"https:\/\/niixer.com\/index.php\/2026\/05\/19\/automatizacion-del-desarrollo-web-creando-un-crm-con-ia-studio\/","name":"Implementaci\u00f3n de un CRM inteligente usando IA Studio y Render","isPartOf":{"@id":"https:\/\/niixer.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/niixer.com\/index.php\/2026\/05\/19\/automatizacion-del-desarrollo-web-creando-un-crm-con-ia-studio\/#primaryimage"},"image":{"@id":"https:\/\/niixer.com\/index.php\/2026\/05\/19\/automatizacion-del-desarrollo-web-creando-un-crm-con-ia-studio\/#primaryimage"},"thumbnailUrl":"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/konkapo-crm-10207454-scaled.jpg","datePublished":"2026-05-19T16:25:12+00:00","dateModified":"2026-05-27T01:03:05+00:00","description":"Aprende c\u00f3mo crear y desplegar un CRM moderno utilizando IA Studio, Supabase, GitHub y Render paso a paso.","breadcrumb":{"@id":"https:\/\/niixer.com\/index.php\/2026\/05\/19\/automatizacion-del-desarrollo-web-creando-un-crm-con-ia-studio\/#breadcrumb"},"inLanguage":"es","potentialAction":[{"@type":"ReadAction","target":["https:\/\/niixer.com\/index.php\/2026\/05\/19\/automatizacion-del-desarrollo-web-creando-un-crm-con-ia-studio\/"]}]},{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/niixer.com\/index.php\/2026\/05\/19\/automatizacion-del-desarrollo-web-creando-un-crm-con-ia-studio\/#primaryimage","url":"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/konkapo-crm-10207454-scaled.jpg","contentUrl":"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/konkapo-crm-10207454-scaled.jpg","width":2560,"height":2560,"caption":"creando un CRM con IA Studio"},{"@type":"BreadcrumbList","@id":"https:\/\/niixer.com\/index.php\/2026\/05\/19\/automatizacion-del-desarrollo-web-creando-un-crm-con-ia-studio\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Portada","item":"https:\/\/niixer.com\/"},{"@type":"ListItem","position":2,"name":"Automatizaci\u00f3n del desarrollo web: creando un CRM con IA Studio"}]},{"@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\/0d4ccc11d22f36958e02093989d8aa49","name":"Gina Marcela Acosta Ruiz","image":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/secure.gravatar.com\/avatar\/8a77ba1a2ad7a33b832074fff28a9fb182352f10246a73b23e43e1b48513796e?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/8a77ba1a2ad7a33b832074fff28a9fb182352f10246a73b23e43e1b48513796e?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/8a77ba1a2ad7a33b832074fff28a9fb182352f10246a73b23e43e1b48513796e?s=96&d=mm&r=g","caption":"Gina Marcela Acosta Ruiz"},"sameAs":["http:\/\/www.niixer.com"],"url":"https:\/\/niixer.com\/index.php\/author\/gacostar1\/"}]}},"jetpack_featured_media_url":"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/konkapo-crm-10207454-scaled.jpg","_links":{"self":[{"href":"https:\/\/niixer.com\/index.php\/wp-json\/wp\/v2\/posts\/86561","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\/123"}],"replies":[{"embeddable":true,"href":"https:\/\/niixer.com\/index.php\/wp-json\/wp\/v2\/comments?post=86561"}],"version-history":[{"count":18,"href":"https:\/\/niixer.com\/index.php\/wp-json\/wp\/v2\/posts\/86561\/revisions"}],"predecessor-version":[{"id":88927,"href":"https:\/\/niixer.com\/index.php\/wp-json\/wp\/v2\/posts\/86561\/revisions\/88927"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/niixer.com\/index.php\/wp-json\/wp\/v2\/media\/86933"}],"wp:attachment":[{"href":"https:\/\/niixer.com\/index.php\/wp-json\/wp\/v2\/media?parent=86561"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/niixer.com\/index.php\/wp-json\/wp\/v2\/categories?post=86561"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/niixer.com\/index.php\/wp-json\/wp\/v2\/tags?post=86561"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}