<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Forem: Noruz</title>
    <description>The latest articles on Forem by Noruz (@xnoruz).</description>
    <link>https://forem.com/xnoruz</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3671010%2F2421624c-f45c-4e05-8dbc-2858075e3e5e.jpeg</url>
      <title>Forem: Noruz</title>
      <link>https://forem.com/xnoruz</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/xnoruz"/>
    <language>en</language>
    <item>
      <title>🧭 Dominando el OWASP Top 10 (Edición 2025): El Plano de Seguridad para la Próxima Generación</title>
      <dc:creator>Noruz</dc:creator>
      <pubDate>Wed, 14 Jan 2026 14:01:03 +0000</pubDate>
      <link>https://forem.com/xnoruz/dominando-el-owasp-top-10-edicion-2025-el-plano-de-seguridad-para-la-proxima-generacion-15jm</link>
      <guid>https://forem.com/xnoruz/dominando-el-owasp-top-10-edicion-2025-el-plano-de-seguridad-para-la-proxima-generacion-15jm</guid>
      <description>&lt;p&gt;En el mundo del desarrollo moderno, la seguridad no es un destino, sino un proceso de mejora continua. Para quienes venimos del desarrollo de software, nuestra mayor ventaja es entender cómo se construye el código; el &lt;strong&gt;OWASP Top 10&lt;/strong&gt; es la guía que nos enseña cómo ese mismo código puede romperse y, lo más importante, cómo protegerlo.&lt;/p&gt;

&lt;p&gt;Esta lista representa los riesgos de seguridad más críticos para las aplicaciones web, basada en datos reales de firmas de seguridad y programas de recompensa por errores (&lt;em&gt;bug bounty programs&lt;/em&gt;).&lt;/p&gt;




&lt;h2&gt;
  
  
  🧠 El Modelo Mental: La Aplicación como una Máquina
&lt;/h2&gt;

&lt;p&gt;Para facilitar el aprendizaje de estas categorías, podemos visualizar cualquier aplicación como un proceso de cuatro etapas:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Entrada de datos (Input Handling):&lt;/strong&gt; Donde ocurren las Inyecciones (&lt;em&gt;Injection&lt;/em&gt;) y fallos de Control de Acceso (&lt;em&gt;Access Control&lt;/em&gt;).
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Procesamiento del sistema (Processing Layer):&lt;/strong&gt; Donde fallan la Criptografía (&lt;em&gt;Cryptography&lt;/em&gt;), la Configuración (&lt;em&gt;Security Configuration&lt;/em&gt;) y la Autenticación (&lt;em&gt;Authentication&lt;/em&gt;).
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Dependencias externas (Dependencies / Supply Chain):&lt;/strong&gt; El enfoque en la Integridad (&lt;em&gt;Integrity&lt;/em&gt;) y la Cadena de Suministro (&lt;em&gt;Software Supply Chain&lt;/em&gt;).
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Respuesta y fallos (Error Handling &amp;amp; Logging):&lt;/strong&gt; Donde el Registro (&lt;em&gt;Logging&lt;/em&gt;) y el Manejo de Excepciones (&lt;em&gt;Exception Handling&lt;/em&gt;) son vitales.&lt;/li&gt;
&lt;/ol&gt;




&lt;h2&gt;
  
  
  🔍 Análisis Profundo del OWASP Top 10 (2025)
&lt;/h2&gt;

&lt;h3&gt;
  
  
  A01: Control de Acceso Defectuoso (&lt;em&gt;Broken Access Control&lt;/em&gt;)
&lt;/h3&gt;

&lt;p&gt;Sigue ocupando el puesto #1 porque el 94% de las aplicaciones analizadas presentaron algún fallo de este tipo. Ocurre cuando los usuarios pueden actuar fuera de sus permisos, como un huésped de hotel cuya llave abre la oficina del gerente.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Cambio clave:&lt;/strong&gt; Ahora integra oficialmente el &lt;strong&gt;SSRF (&lt;em&gt;Server-Side Request Forgery&lt;/em&gt;)&lt;/strong&gt;, donde se obliga al servidor a realizar peticiones a recursos internos.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Defensa:&lt;/strong&gt; Implementar políticas de &lt;em&gt;“deny by default”&lt;/em&gt; y centralizar la lógica de autorización (&lt;em&gt;authorization logic&lt;/em&gt;) en middleware.&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  A02: Configuración de Seguridad Incorrecta (&lt;em&gt;Security Misconfiguration&lt;/em&gt;)
&lt;/h3&gt;

&lt;p&gt;Este riesgo subió al puesto #2 debido a la complejidad de la nube (AWS/Azure) y Kubernetes. Incluye desde dejar credenciales por defecto (&lt;em&gt;default credentials&lt;/em&gt;) hasta habilitar el modo de depuración (&lt;em&gt;debug mode&lt;/em&gt;) en producción.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Enfoque DevSecOps:&lt;/strong&gt; Utilizar escaneo de &lt;strong&gt;Infraestructura como Código (&lt;em&gt;Infrastructure as Code, IaC&lt;/em&gt;)&lt;/strong&gt; con herramientas como Checkov o tfsec para detectar errores antes del despliegue.&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  A03: Fallos en la Cadena de Suministro de Software (&lt;em&gt;Software Supply Chain Failures&lt;/em&gt;)
&lt;/h3&gt;

&lt;p&gt;Es el tema más relevante hoy en día (reemplazando a &lt;em&gt;Vulnerable and Outdated Components&lt;/em&gt;). No basta con que tu código sea seguro si las librerías (&lt;em&gt;third-party libraries&lt;/em&gt;) que usas están comprometidas.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Defensa:&lt;/strong&gt; Generar un &lt;strong&gt;SBOM (&lt;em&gt;Software Bill of Materials&lt;/em&gt;)&lt;/strong&gt; para saber exactamente qué hay en tu software y usar herramientas de &lt;strong&gt;SCA (&lt;em&gt;Software Composition Analysis&lt;/em&gt;)&lt;/strong&gt; como Snyk.&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  A04: Fallos Criptográficos (&lt;em&gt;Cryptographic Failures&lt;/em&gt;)
&lt;/h3&gt;

&lt;p&gt;Se refiere a la protección insuficiente de datos sensibles (&lt;em&gt;sensitive data&lt;/em&gt;) en tránsito (&lt;em&gt;in transit&lt;/em&gt;) o en reposo (&lt;em&gt;at rest&lt;/em&gt;).&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Mejor práctica:&lt;/strong&gt; Usar algoritmos fuertes como &lt;strong&gt;Argon2&lt;/strong&gt; para contraseñas (&lt;em&gt;password hashing&lt;/em&gt;) y gestionar llaves criptográficas (&lt;em&gt;encryption keys&lt;/em&gt;) en bóvedas como &lt;strong&gt;HashiCorp Vault&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  A05: Inyección (&lt;em&gt;Injection&lt;/em&gt;)
&lt;/h3&gt;

&lt;p&gt;Ocurre cuando se envían datos no confiables (&lt;em&gt;untrusted input&lt;/em&gt;) a un intérprete (SQL, NoSQL, OS commands) como parte de una consulta.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Solución:&lt;/strong&gt; Utilizar siempre &lt;strong&gt;consultas parametrizadas (&lt;em&gt;parameterized queries&lt;/em&gt;)&lt;/strong&gt; o &lt;strong&gt;sentencias preparadas (&lt;em&gt;prepared statements&lt;/em&gt;)&lt;/strong&gt;, lo que separa el código de los datos.&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  A06: Diseño Inseguro (&lt;em&gt;Insecure Design&lt;/em&gt;)
&lt;/h3&gt;

&lt;p&gt;A diferencia de los errores de código, estos son fallos arquitectónicos (&lt;em&gt;architectural flaws&lt;/em&gt;). Es un problema de diseño del sistema (&lt;em&gt;system design&lt;/em&gt;), no de implementación.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Prevención:&lt;/strong&gt; Realizar &lt;strong&gt;Modelado de Amenazas (&lt;em&gt;Threat Modeling&lt;/em&gt;)&lt;/strong&gt; usando metodologías como &lt;strong&gt;STRIDE&lt;/strong&gt; durante la fase de diseño (&lt;em&gt;design phase&lt;/em&gt;).&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  A07: Fallos de Identificación y Autenticación (&lt;em&gt;Identification and Authentication Failures&lt;/em&gt;)
&lt;/h3&gt;

&lt;p&gt;Debilidades en cómo se verifica la identidad del usuario (&lt;em&gt;identity verification&lt;/em&gt;) y se gestionan las sesiones (&lt;em&gt;session management&lt;/em&gt;).&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Mitigación:&lt;/strong&gt; Forzar &lt;strong&gt;MFA (&lt;em&gt;Multi-Factor Authentication&lt;/em&gt;)&lt;/strong&gt; y aplicar &lt;strong&gt;rate limiting&lt;/strong&gt; en los endpoints de inicio de sesión (&lt;em&gt;login endpoints&lt;/em&gt;).&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  A08: Fallos de Integridad de Software y Datos (&lt;em&gt;Software and Data Integrity Failures&lt;/em&gt;)
&lt;/h3&gt;

&lt;p&gt;Se centra en la falta de verificación de código, actualizaciones y artefactos provenientes de fuentes no confiables (&lt;em&gt;untrusted sources&lt;/em&gt;).&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Acción:&lt;/strong&gt; Firmar digitalmente imágenes de contenedores (&lt;em&gt;container images&lt;/em&gt;) y artefactos usando herramientas como &lt;strong&gt;Cosign&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  A09: Fallos de Registro y Monitoreo (&lt;em&gt;Security Logging and Monitoring Failures&lt;/em&gt;)
&lt;/h3&gt;

&lt;p&gt;Si no puedes ver los ataques, no puedes detenerlos. La falta de registros (&lt;em&gt;logs&lt;/em&gt;) impide detectar brechas de seguridad (&lt;em&gt;security breaches&lt;/em&gt;).&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Solución:&lt;/strong&gt; Centralizar registros en un &lt;strong&gt;SIEM (&lt;em&gt;Security Information and Event Management&lt;/em&gt;)&lt;/strong&gt; como ELK o Splunk y generar alertas ante patrones sospechosos (picos de errores 401/403).&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  A10: Manejo Incorrecto de Condiciones Excepcionales (&lt;em&gt;Improper Exception Handling&lt;/em&gt;)
&lt;/h3&gt;

&lt;p&gt;Esta categoría se enfoca en la resiliencia (&lt;em&gt;resilience&lt;/em&gt;) y en que el sistema &lt;em&gt;“falle de forma segura”&lt;/em&gt; (&lt;em&gt;fail securely&lt;/em&gt;). Un error común es mostrar &lt;strong&gt;stack traces&lt;/strong&gt; completos al usuario, filtrando rutas internas (&lt;em&gt;internal paths&lt;/em&gt;) o secretos (&lt;em&gt;secrets&lt;/em&gt;).&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Prevención:&lt;/strong&gt; Implementar manejadores de errores globales (&lt;em&gt;global error handlers&lt;/em&gt;) que devuelvan mensajes genéricos al cliente pero registros detallados internamente.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  🚀 Estrategia de Implementación en el Pipeline CI/CD
&lt;/h2&gt;

&lt;p&gt;Para que la seguridad sea escalable, debemos integrarla en cada etapa del &lt;strong&gt;SDLC (&lt;em&gt;Software Development Life Cycle&lt;/em&gt;)&lt;/strong&gt;:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Etapa&lt;/th&gt;
&lt;th&gt;Actividad de Seguridad&lt;/th&gt;
&lt;th&gt;Herramientas sugeridas&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;IDE / Commit&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;SAST (&lt;em&gt;Static Application Security Testing&lt;/em&gt;) y escaneo de secretos (&lt;em&gt;secret scanning&lt;/em&gt;)&lt;/td&gt;
&lt;td&gt;SonarQube, TruffleHog&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Build / CI&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;SCA (&lt;em&gt;Software Composition Analysis&lt;/em&gt;)&lt;/td&gt;
&lt;td&gt;Snyk, Dependabot&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Deploy / CD&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Escaneo de IaC y contenedores (&lt;em&gt;container scanning&lt;/em&gt;)&lt;/td&gt;
&lt;td&gt;Checkov, Trivy&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Runtime&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;DAST (&lt;em&gt;Dynamic Application Security Testing&lt;/em&gt;) y observabilidad&lt;/td&gt;
&lt;td&gt;OWASP ZAP, Datadog&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h2&gt;
  
  
  🏁 Conclusión
&lt;/h2&gt;

&lt;p&gt;Adoptar el OWASP Top 10 no se trata de memorizar una lista, sino de usarla como base para &lt;strong&gt;priorizar riesgos (&lt;em&gt;risk prioritization&lt;/em&gt;)&lt;/strong&gt; en nuestra organización. Como ingenieros, nuestra meta debe ser &lt;strong&gt;“shift security left”&lt;/strong&gt;, automatizando estos controles para que actúen como &lt;strong&gt;quality gates&lt;/strong&gt; y no como obstáculos al final del camino.&lt;/p&gt;

</description>
      <category>cybersecurity</category>
      <category>security</category>
      <category>webdev</category>
      <category>appsec</category>
    </item>
    <item>
      <title>🔐 AppSec desde los Protocolos: Cómo HTTP, Cookies y CORS Definen tu Superficie de Ataque</title>
      <dc:creator>Noruz</dc:creator>
      <pubDate>Wed, 14 Jan 2026 13:24:13 +0000</pubDate>
      <link>https://forem.com/xnoruz/appsec-desde-los-protocolos-como-http-cookies-y-cors-definen-tu-superficie-de-ataque-4j54</link>
      <guid>https://forem.com/xnoruz/appsec-desde-los-protocolos-como-http-cookies-y-cors-definen-tu-superficie-de-ataque-4j54</guid>
      <description>&lt;p&gt;En la transición de un rol de desarrollo puro hacia &lt;strong&gt;AppSec o DevSecOps&lt;/strong&gt;, el cambio más importante no es solo técnico, sino de mentalidad. Debemos dejar de ver nuestras aplicaciones únicamente a través del &lt;em&gt;“camino feliz” (happy path)&lt;/em&gt; y empezar a entender cómo cada protocolo y componente puede ser manipulado por un atacante.&lt;/p&gt;

&lt;p&gt;En esta lección, exploraremos los pilares fundamentales de la comunicación web que todo ingeniero debe dominar para construir software resiliente.&lt;/p&gt;




&lt;h2&gt;
  
  
  1. 🌐 HTTP: El Protocolo de “Conversación”
&lt;/h2&gt;

&lt;p&gt;Imagina que el protocolo HTTP es como pedir comida en un restaurante: el cliente hace un pedido (&lt;em&gt;request&lt;/em&gt;) y el servidor entrega el plato (&lt;em&gt;response&lt;/em&gt;). Sin embargo, en AppSec partimos de una premisa crítica: &lt;strong&gt;cada byte de esa solicitud (headers, parámetros, cuerpo) está bajo el control total del atacante&lt;/strong&gt;.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;El riesgo:&lt;/strong&gt; Los desarrolladores suelen confiar ciegamente en los datos del cliente, lo que abre la puerta a ataques de manipulación de parámetros y escalada de privilegios.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;La defensa:&lt;/strong&gt; La validación en el lado del servidor no es negociable. Nunca debemos procesar lógica de negocio (como precios de productos o roles de usuario) basándonos en lo que el cliente envía en la solicitud; esa información debe provenir de nuestra propia base de datos.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  2. 🔒 TLS y HTTPS: Mucho Más que un Candado
&lt;/h2&gt;

&lt;p&gt;Si HTTP es una postal que cualquiera puede leer en el camino, &lt;strong&gt;TLS es un sobre de acero sellado&lt;/strong&gt; que garantiza confidencialidad e integridad.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Confidencialidad:&lt;/strong&gt; Los datos están cifrados 🔐.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Integridad:&lt;/strong&gt; Los datos no pueden ser modificados sin ser detectados 🧩.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Autenticación:&lt;/strong&gt; El cliente verifica que el servidor es quien dice ser mediante certificados 🪪.
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Mejor práctica:&lt;/strong&gt; Implementar &lt;strong&gt;HSTS (HTTP-Strict-Transport-Security)&lt;/strong&gt; para forzar al navegador a usar siempre HTTPS, evitando ataques de degradación como el &lt;em&gt;TLS stripping&lt;/em&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  3. 🍪 Cookies y el Manejo de Sesiones
&lt;/h2&gt;

&lt;p&gt;Dado que HTTP es un protocolo sin estado (&lt;em&gt;stateless&lt;/em&gt;), las cookies actúan como “tickets de guardarropa” que identifican al usuario. Si un atacante roba este ticket, se convierte en el usuario sin necesidad de contraseña.&lt;/p&gt;

&lt;p&gt;Para protegerlas, es vital configurar correctamente sus atributos:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;HttpOnly:&lt;/strong&gt; Evita que scripts maliciosos (XSS) lean la cookie 🧪.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Secure:&lt;/strong&gt; Asegura que la cookie solo se envíe sobre conexiones cifradas HTTPS 🔑.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;SameSite (Strict / Lax):&lt;/strong&gt; Controla el envío de cookies en solicitudes entre sitios, siendo la defensa principal contra el ataque &lt;strong&gt;CSRF (Cross-Site Request Forgery)&lt;/strong&gt; 🛑.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  4. 🧭 La Frontera del Navegador: SOP y CORS
&lt;/h2&gt;

&lt;p&gt;La &lt;strong&gt;Política de Mismo Origen (SOP, Same-Origin Policy)&lt;/strong&gt; es el mecanismo de seguridad más básico del navegador; impide que un sitio malicioso (&lt;code&gt;malware.com&lt;/code&gt;) lea datos de tu cuenta en otro sitio (&lt;code&gt;banco.com&lt;/code&gt;).&lt;/p&gt;

&lt;p&gt;Sin embargo, las aplicaciones modernas necesitan compartir recursos entre dominios. Aquí entra &lt;strong&gt;CORS (Cross-Origin Resource Sharing)&lt;/strong&gt;, que es esencialmente una “lista de invitados” donde el servidor le dice al navegador qué dominios externos tienen permiso para leer sus respuestas.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Error común:&lt;/strong&gt; Configurar &lt;code&gt;Access-Control-Allow-Origin: *&lt;/code&gt; (comodín) en endpoints que manejan datos sensibles o credenciales, lo que anula las protecciones del SOP.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  5. 🔑 Seguridad en APIs y Tokens
&lt;/h2&gt;

&lt;p&gt;Las APIs exponen la lógica de negocio directamente, a menudo sin la capa de desinfección de una interfaz de usuario tradicional.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Asignación Masiva (&lt;em&gt;Mass Assignment&lt;/em&gt;):&lt;/strong&gt; Ocurre cuando un API acepta campos JSON que no debería (por ejemplo, &lt;code&gt;isAdmin: true&lt;/code&gt;) y los guarda directamente en la base de datos.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Manejo de tokens (JWT):&lt;/strong&gt; Existe un gran debate sobre dónde almacenar los tokens. &lt;strong&gt;La recomendación en AppSec suele ser usar cookies &lt;code&gt;HttpOnly&lt;/code&gt; y &lt;code&gt;Secure&lt;/code&gt; en lugar de &lt;code&gt;localStorage&lt;/code&gt;&lt;/strong&gt;, ya que este último es vulnerable al robo mediante XSS.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  6. 🔄 WebSockets y Webhooks: Los Puntos Ciegos
&lt;/h2&gt;

&lt;p&gt;A diferencia del modelo de “carta” de HTTP, los &lt;strong&gt;WebSockets&lt;/strong&gt; son como una “llamada telefónica” abierta donde ambas partes pueden hablar en cualquier momento. Esto complica el control de velocidad y la autorización, que debe validarse en cada mensaje y no solo al inicio de la conexión.&lt;/p&gt;

&lt;p&gt;Por otro lado, los &lt;strong&gt;webhooks&lt;/strong&gt; son “timbres” que servicios externos tocan para notificarnos de un evento. Dado que son endpoints públicos, es crítico &lt;strong&gt;verificar las firmas HMAC&lt;/strong&gt; para asegurar que la notificación realmente proviene de un proveedor confiable (como Stripe o GitHub) y no de un impostor.&lt;/p&gt;




&lt;h2&gt;
  
  
  🛡️ Conclusión: Defensa en Profundidad
&lt;/h2&gt;

&lt;p&gt;La seguridad no se trata de una única herramienta, sino de capas. Combinar &lt;strong&gt;validación de entrada&lt;/strong&gt;, &lt;strong&gt;flags de cookies&lt;/strong&gt;, &lt;strong&gt;configuraciones estrictas de CORS&lt;/strong&gt; y &lt;strong&gt;monitoreo continuo&lt;/strong&gt; es lo que realmente protege una aplicación.&lt;/p&gt;

&lt;p&gt;Si solo recuerdas una cosa de esta lección, que sea esta:&lt;br&gt;&lt;br&gt;
&lt;strong&gt;la seguridad empieza en los protocolos, no en el framework.&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Y, sobre todo, &lt;strong&gt;nunca confíes en el cliente&lt;/strong&gt; 🚨.&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>appsec</category>
      <category>security</category>
      <category>web</category>
    </item>
    <item>
      <title>Fundamentos de AppSec: Protegiendo el Corazón de tus Aplicaciones</title>
      <dc:creator>Noruz</dc:creator>
      <pubDate>Wed, 14 Jan 2026 13:05:19 +0000</pubDate>
      <link>https://forem.com/xnoruz/fundamentos-de-appsec-protegiendo-el-corazon-de-tus-aplicaciones-529e</link>
      <guid>https://forem.com/xnoruz/fundamentos-de-appsec-protegiendo-el-corazon-de-tus-aplicaciones-529e</guid>
      <description>&lt;p&gt;Como ingenieros de software, estamos acostumbrados a construir funcionalidades que simplemente &lt;em&gt;funcionen&lt;/em&gt;. Sin embargo, en la Seguridad de Aplicaciones (AppSec), el enfoque cambia: &lt;strong&gt;nuestro objetivo es garantizar que esas funcionalidades no puedan ser subvertidas&lt;/strong&gt;. Esta lectura está diseñada para ayudarte a realizar ese cambio de mentalidad, centrándote en los pilares que utilizarás cada día para diseñar sistemas seguros y priorizar vulnerabilidades.&lt;/p&gt;




&lt;h3&gt;
  
  
  1. La Tríada CIA: El "Norte" de la Seguridad
&lt;/h3&gt;

&lt;p&gt;La Tríada CIA es el modelo fundamental que guía las políticas de seguridad de la información y representa tres promesas que tu aplicación le hace a sus usuarios.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;strong&gt;Confidencialidad (Confidentiality):&lt;/strong&gt; Garantizar que los datos sensibles sean accesibles solo para las partes autorizadas. Es la promesa de: &lt;em&gt;"Mantendré tus secretos"&lt;/em&gt;.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Integridad (Integrity):&lt;/strong&gt; Asegurar que los datos permanezcan precisos, completos y sin alteraciones, a menos que un usuario autorizado los modifique. Es decir: &lt;em&gt;"No dejaré que nadie manipule tus datos"&lt;/em&gt;.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Disponibilidad (Availability):&lt;/strong&gt; Asegurar que los sistemas y datos estén accesibles cuando los usuarios autorizados los necesiten. Se traduce en: &lt;em&gt;"Estaré allí cuando me necesites"&lt;/em&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Modelo Mental:&lt;/strong&gt; Piensa en una &lt;strong&gt;bóveda bancaria&lt;/strong&gt;. La &lt;strong&gt;confidencialidad&lt;/strong&gt; son las paredes gruesas y la llave del gerente; la &lt;strong&gt;integridad&lt;/strong&gt; es que si depositas $100, retires $100 y no otra cantidad; la &lt;strong&gt;disponibilidad&lt;/strong&gt; es que el banco esté abierto en horas hábiles para que puedas acceder a tu dinero.&lt;/p&gt;

&lt;p&gt;En el mundo real, ignorar estos pilares tiene consecuencias graves. Un fallo de confidencialidad puede exponer claves de API o datos personales; uno de integridad permite ataques de inyección SQL que alteran la base de datos; y uno de disponibilidad puede ser un ataque DDoS que tumba tu servicio.&lt;/p&gt;




&lt;h3&gt;
  
  
  2. Gestión de Riesgos: El Triage de Seguridad
&lt;/h3&gt;

&lt;p&gt;En AppSec, no podemos arreglarlo todo. La &lt;strong&gt;Gestión de Riesgos&lt;/strong&gt; es el proceso de identificar, evaluar y priorizar amenazas para reducir el riesgo a un nivel aceptable para el negocio.&lt;/p&gt;

&lt;p&gt;La fórmula clave que debes recordar es: &lt;strong&gt;Riesgo = Probabilidad × Impacto&lt;/strong&gt;.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;strong&gt;Probabilidad:&lt;/strong&gt; ¿Qué tan fácil es explotar la vulnerabilidad? ¿Existe un código de explotación público?.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Impacto:&lt;/strong&gt; ¿Cuál es el daño si se explota? ¿Afecta a un usuario o a toda la base de datos?.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Modelo Mental:&lt;/strong&gt; Actúa como una &lt;strong&gt;enfermera de triage&lt;/strong&gt;. Si llega un paciente con un corte de papel (Bajo Impacto) y otro con un ataque al corazón (Alto Impacto), tratas primero el ataque al corazón, incluso si el corte de papel es 100% probable que duela.&lt;/p&gt;

&lt;p&gt;Para manejar esto, los desarrolladores deben adoptar el &lt;strong&gt;Modelado de Amenazas (Threat Modeling)&lt;/strong&gt; (preguntarse "¿qué puede salir mal?" antes de escribir código) y utilizar sistemas como &lt;strong&gt;CVSS&lt;/strong&gt; para puntuar vulnerabilidades de forma objetiva.&lt;/p&gt;




&lt;h3&gt;
  
  
  3. Autenticación (AuthN) vs. Autorización (AuthZ)
&lt;/h3&gt;

&lt;p&gt;Estos dos conceptos se confunden a menudo, pero su distinción es vital para la seguridad.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;strong&gt;Autenticación (AuthN):&lt;/strong&gt; ¿Quién eres? Es la verificación de la identidad de un usuario o sistema (ej. mediante contraseñas, tokens o biometría).&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Autorización (AuthZ):&lt;/strong&gt; ¿Qué tienes permitido hacer? Es determinar a qué recursos puede acceder una identidad ya autenticada.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Modelo Mental:&lt;/strong&gt; Tu &lt;strong&gt;licencia de conducir&lt;/strong&gt; sirve para la &lt;strong&gt;autenticación&lt;/strong&gt; (demuestra quién eres por tu foto y nombre). Tu &lt;strong&gt;edad&lt;/strong&gt; en esa misma licencia sirve para la &lt;strong&gt;autorización&lt;/strong&gt; (determina si puedes comprar alcohol o alquilar un vehículo).&lt;/p&gt;

&lt;p&gt;Los fallos de autorización, como &lt;strong&gt;IDOR&lt;/strong&gt; (Referencia Directa Insegura a Objetos), donde un usuario cambia un ID en la URL para ver datos ajenos, son de los más comunes y peligrosos. La regla de oro es: &lt;strong&gt;"Denegar por defecto"&lt;/strong&gt; y verificar permisos en &lt;em&gt;cada&lt;/em&gt; solicitud, no solo al iniciar sesión.&lt;/p&gt;




&lt;h3&gt;
  
  
  4. Mejores Prácticas para Desarrolladores
&lt;/h3&gt;

&lt;p&gt;Para implementar estos conceptos de manera efectiva, debemos integrar la seguridad en todo el ciclo de vida del desarrollo (&lt;strong&gt;Shift Left&lt;/strong&gt;):&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt; &lt;strong&gt;Defensa en Profundidad:&lt;/strong&gt; No dependas de un solo control. Usa múltiples capas (WAF, cifrado, validación de entrada, monitoreo) para que, si una falla, las otras protejan el sistema.&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;Principio de Mínimo Privilegio:&lt;/strong&gt; Los usuarios y sistemas deben tener solo los permisos mínimos necesarios para realizar su trabajo.&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;Gestión de Secretos:&lt;/strong&gt; Nunca guardes claves o contraseñas en el código fuente o Git. Usa bóvedas de secretos (como AWS Secrets Manager o HashiCorp Vault) y tokens de corta duración.&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;Validación de Entradas:&lt;/strong&gt; Trata toda entrada del usuario como maliciosa. Usa consultas parametrizadas para evitar inyecciones SQL.&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;Seguridad en el Pipeline CI/CD:&lt;/strong&gt; Escanea dependencias en busca de vulnerabilidades conocidas y realiza análisis estático (SAST) de tu código antes de desplegar.&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  Conclusión
&lt;/h3&gt;

&lt;p&gt;La seguridad no es una lista de verificación, sino una &lt;strong&gt;mentalidad de pensar como un atacante mientras construyes defensas&lt;/strong&gt;. Al dominar la Tríada CIA, entender el riesgo y separar correctamente la autenticación de la autorización, dejas de ser solo un desarrollador de funcionalidades para convertirte en el primer guardián de la integridad de tu aplicación.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;¿Te interesa profundizar en algún tema? Explora recursos como el **OWASP Top 10&lt;/em&gt;* o la &lt;strong&gt;PortSwigger Web Security Academy&lt;/strong&gt; para continuar tu aprendizaje práctico.*&lt;/p&gt;

</description>
      <category>security</category>
      <category>appsec</category>
      <category>web</category>
      <category>development</category>
    </item>
  </channel>
</rss>
