Este documento describe las medidas de seguridad implementadas en Michi Router y las mejores prácticas recomendadas para su uso.
El router incluye validaciones automáticas para prevenir navegación a URLs potencialmente peligrosas:
- Bloqueo de
javascript:URLs: Previene ejecución de código JavaScript arbitrario - Bloqueo de
data:URLs: Previene inyección de contenido malicioso - Validación de tipos: Solo acepta strings como parámetros de navegación
// Estas URLs son bloqueadas automáticamente
navigate('javascript:alert("XSS")');
navigate('data:text/html,<script>alert("XSS")</script>');
// Estas URLs son permitidas
navigate('/dashboard');
navigate('/user/123');
navigate('https://external-site.com');- Detección automática de entorno: Verifica si
windowestá disponible - Inicialización segura: Proporciona valores por defecto seguros
- Prevención de errores: No intenta acceder a APIs del navegador innecesariamente
- No uso de
dangerouslySetInnerHTML: Todo el contenido se renderiza de forma segura - Renderizado declarativo: Solo se utilizan componentes React para el renderizado
- Validación de entrada: Las rutas se validan antes del procesamiento
- Validación de configuración: Verifica que los parámetros requeridos estén presentes
- Manejo seguro de estados: No expone información sensible en errores
- Redirección controlada: Solo permite redirecciones a rutas válidas
Siempre valida las rutas del lado del servidor:
// En tu backend/API
function validateRoute(route: string): boolean {
const allowedRoutes = ['/dashboard', '/profile', '/settings'];
return allowedRoutes.some(allowed => route.startsWith(allowed));
}Usa el componente Protected con validaciones robustas:
// Buena práctica
<Protected
configObject={{
states: {
user: authenticatedUser, // Verificado por tu sistema de auth
isLoading
},
redirectionPath: '/login',
loadingComponent: <AuthenticatingComponent />
}}
>
<SensitiveContent />
</Protected>Michi Router es compatible con CSP estrictas. Ejemplo de headers recomendados:
Content-Security-Policy:
default-src 'self';
script-src 'self';
style-src 'self' 'unsafe-inline';
img-src 'self' data: https:;
Para URLs externas o generadas dinámicamente, siempre sanitiza:
function sanitizeUrl(url: string): string {
// Implementa tu lógica de sanitización
const allowedProtocols = ['http:', 'https:', 'mailto:'];
const urlObj = new URL(url);
if (!allowedProtocols.includes(urlObj.protocol)) {
throw new Error('Protocolo no permitido');
}
return url;
}Si encuentras una vulnerabilidad de seguridad, por favor:
- NO abras un issue público
- Envía un email a [security@project.com] (reemplazar con email real)
- Incluye:
- Descripción detallada de la vulnerabilidad
- Pasos para reproducir
- Impacto potencial
- Versión afectada
- Última auditoría: 14/diciembre/2025
- Herramientas utilizadas:
npm audit- Análisis estático de código
- Pruebas de penetración básicas
- Estado: Sin vulnerabilidades conocidas
- Mantén siempre la versión más reciente
- Suscríbete a las notificaciones de GitHub para updates de seguridad
- Revisa regularmente las dependencias con
npm audit
Nota: La seguridad es responsabilidad compartida. Mientras Michi Router implementa medidas de protección, la seguridad completa de tu aplicación depende también de:
- Configuración correcta del servidor
- Validación en el backend
- Implementación segura de autenticación
- Políticas de seguridad del navegador (CSP, HTTPS, etc.)