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-securityspring-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-validationpara 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.