dio-quincar
134 posts

dio-quincar
@DioQuincar
Backend Software Developer or Something like That! Java | SpringBoot | SQL | OCI Associate . ☕ more Java than coffe
Panamá Katılım Mart 2023
115 Takip Edilen3 Takipçiler

Detrás de un Load Balancer, la IP real puede perderse.
En mi Auth:
X-Forwarded-For
X-Real-IP
getRemoteAddr() como fallback
Cada acción queda auditada con IP, User-Agent y contexto.
La auditoría solo sirve si registra la información correcta.
#springsecurity #java

Español

La accesibilidad también es ingeniería.
En mi frontend:
WCAG AA (5.5:1)
Zoom habilitado
Navegación por teclado
ARIA
prefers-reduced-motion
Gestión automática del foco
Mejor UX, mejor accesibilidad y mejor SEO.
#buildinpublic

Español

Adiós localStorage para Refresh Tokens.
Ahora uso cookies:
HttpOnly
Secure
SameSite=Strict
El navegador maneja el token.
JavaScript no puede leerlo.
Seguridad invisible, pero mucho más resistente a XSS.
#java #springsecurity

Español

Hallazgo C.5
contains() no es una estrategia de seguridad.
Fix:
startsWith()
AntPathMatcher
Las rutas públicas deben coincidir exactamente, no "parecerse".
La precisión también es seguridad.
#java #springsecurity

Español

Antes:
Google + email existente = Error 500.
Ahora:
Buscar por email
Vincular providerId
Sincronizar perfil
@Transactional para garantizar consistencia
Una identidad, múltiples formas de autenticarse.
#springsecurity #java #buildinpublic

Español
dio-quincar retweetledi

Estrategia Lean DB
Problema:
6 GB RAM en OCI Free Tier
Una DB por servicio era demasiado costoso
Solución:
1 PostgreSQL
Schemas auth y core
✔ Aislamiento lógico
✔ Menos operación
✔ Ahorro de 500-700 MB RAM
Arquitectura guiada por restricciones reales.
#java #springboot

Español

Pedirle al usuario que invente un slug fue un error.
Problemas:
Duplicados
Caracteres inválidos
Onboarding más complejo
Fix:
Solo pide el nombre de la empresa
El slug se genera automáticamente
Menos fricción, menos errores.
#java #springsecuirty

Español

Race Condition en Rate Limiting
Problema:
Incremento y TTL no eran atómicos
Bajo alta concurrencia, existía una ventana para saltarse el bloqueo.
Fix:
Operaciones atómicas en Redis
Contador + expiración en un solo paso
Menos ventanas de ataque, más consistencia
#java

Español

Hace años trabajé en una empresa de venta por catálogo y siempre tuve esta duda:
¿Cómo pueden vender tenis Nike más baratos que la tienda oficial?
Ahí descubrí que Nike (y otras) "rentan" los derechos de la marca exigiéndoles un "estándar de calidad mínimo" para poder usar su logo.
Con este permiso, la empresa busca maquiladoras en otros países para que los fabriquen a un menor costo y listo, ya puedes tener tenis con el logo original a menor precio...
Español

Doble Parsing = CPU desperdiciada
Hallazgo en el Gateway:
JWT parseado dos veces:
Validación
Extracción de claims
Fix:
Un solo parseo
Manejo de errores con try/catch
Menos CPU, menos latencia, mismo resultado.
#java @springsecurity

Español
dio-quincar retweetledi

Backend development is simple, you just need to learn these
HTTP methods
Status codes
Request headers
Response headers
Authentication
Authorization
JWT tokens
Session management
Cookies
OAuth 2.0
API design
RESTful APIs
GraphQL
WebSockets
Server-side rendering
Database design
SQL queries
NoSQL databases
Database indexing
Query optimization
ACID properties
CAP theorem
Normalization
Denormalization
ORM (Object-Relational Mapping)
Connection pooling
Transactions
Migrations
Seeding data
Caching strategies
Redis
Memcached
CDN integration
Rate limiting
Throttling
API versioning
Middleware
Error handling
Logging
Monitoring
Application performance monitoring (APM)
Load balancing
Horizontal scaling
Vertical scaling
Microservices architecture
Monolithic architecture
Service-oriented architecture (SOA)
Message queues
Pub/Sub patterns
Event-driven architecture
CQRS pattern
Saga pattern
API Gateway
Service mesh
Docker containers
Kubernetes orchestration
CI/CD pipelines
Environment variables
Configuration management
Secrets management
CORS (Cross-Origin Resource Sharing)
CSRF protection
XSS prevention
SQL injection prevention
Input validation
Output sanitization
Password hashing
Bcrypt/Argon2
Salt and pepper
Two-factor authentication (2FA)
Single sign-on (SSO)
RBAC (Role-Based Access Control)
ABAC (Attribute-Based Access Control)
File uploads
Streaming data
Pagination
Filtering and sorting
Full-text search
Elasticsearch
English

Los milisegundos también pueden filtrar información.
En password recovery implementé:
Respuestas uniformes
Dummy Delay contra timing attacks
Tokens generados con SecureRandom
Menos información para el atacante, más seguridad para el usuario.
#springsecurity #java

Español

Perfecto para entender qué hace realmente el SecurityFilterChain y cómo manejar los roles con @PreAuthorize.
Repo: github.com/dio-quincarDev…
#Java #SpringSecurity #Backend #Developer
Español

El AuthenticationFilter no estaba presente en los perfiles reales.
Resultado:
JWT podía no validarse en ciertas rutas.
Fix:
YAML corregido
AuthenticationFilter
PreserveHostHeader
+ 32 tests para evitar regresiones.
La seguridad también falla por configuración.
#java

Español
dio-quincar retweetledi


