Skip to main content

12. Seguridad

Componentes Analizados​

1. Spring Security & OAuth2​

El sistema implementa seguridad mediante Spring Security y OAuth2 Resource Server (Dependencias en pom.xml):

  • spring-boot-starter-security
  • spring-boot-starter-oauth2-resource-server

Esto indica que los endpoints (o la mayoría de ellos) están protegidos mediante Tokens JWT, operando como un Servidor de Recursos (Resource Server). Se validarán los tokens provistos por el Identity Provider (IdP) configurado en el ecosistema (por ejemplo Keycloak o GCP Identity).

2. Criptografía y Certificados​

El repositorio importa la librería BouncyCastle (bcprov-jdk18on, bcpkix-jdk18on) y un interceptor o configuración CryptoProviderConfig.

  • Propósito: Gestión de sellos, firmado, manejo de certificados (.cer, .key) requeridos típicamente en los procesos de facturación/timbrado electrónico en México (SAT).

3. Validaciones​

  • Se emplea spring-boot-starter-validation para mitigar ataques de inyección y garantizar la integridad de los datos de entrada (Requests) antes de llegar a la lógica de negocio.

4. Control de Namespaces e Inyección Externa (XML)​

Se identificó que el proyecto incrusta identificadores y esquemas de origen oficiales (ej. http://www.sat.gob.mx/... y http://www.tiendasneto.com/...) de manera estática directamente en el código fuente durante la generación y parseo de comprobantes (XML). Desde la perspectiva de seguridad arquitectónica, esta es una excelente práctica porque:

  • Mitiga vulnerabilidades de Inyección XML (XXE): Las definiciones de los espacios de nombres (namespaces) están selladas por el desarrollador y no se capturan dinámicamente desde la base de datos o por inputs de usuario.
  • Previene el Envenenamiento de Esquemas (Schema Poisoning): La integridad estructural (SchemaLocation) no puede ser alterada por un atacante, garantizando que el parseo siempre utilice el estándar oficial del SAT u OIC sin desviaciones.