Prevención de Ataques
Estrategias de Validación de Entradas
Enfoque de Lista Blanca
Implemente una validación estricta de entradas permitiendo solo rutas o patrones de archivos específicos predefinidos:
import os
import re
def validate_file_path(input_path):
## Definir directorios permitidos
allowed_dirs = ['/var/www/safe_directory', '/home/user/documents']
## Normalizar y resolver la ruta
normalized_path = os.path.normpath(input_path)
## Verificar si la ruta está dentro de los directorios permitidos
for allowed_dir in allowed_dirs:
if os.path.commonpath([normalized_path, allowed_dir]) == allowed_dir:
return True
return False
Técnicas de Sanitización de Rutas
Métodos de Sanitización
graph TD
A[Entrada del Usuario] --> B{Proceso de Sanitización}
B --> C[Eliminar Caracteres Especiales]
B --> D[Normalizar Ruta]
B --> E[Validar contra Lista Blanca]
E --> F{¿Acceso Permitido?}
F -->|Sí| G[Procesar Solicitud]
F -->|No| H[Rechazar Solicitud]
Ejemplo Práctico de Sanitización
def sanitize_path(user_input):
## Eliminar posibles caracteres de travesía de rutas
sanitized_path = user_input.replace('../', '').replace('..\\', '')
## Sanitización adicional
sanitized_path = re.sub(r'[^a-zA-Z0-9_\-\/\.]', '', sanitized_path)
return sanitized_path
Técnicas de Prevención
| Método de Prevención |
Descripción |
Eficacia |
| Validación de Entrada |
Restricción de la entrada a formatos esperados |
Alta |
| Normalización de Ruta |
Resolver y limpiar rutas de archivos |
Media |
| Controles de Acceso |
Implementar permisos estrictos del sistema de archivos |
Crítica |
Estrategias de Protección Avanzadas
Implementación de Chroot Jail
Crear entornos aislados para limitar el acceso al sistema de archivos:
## Ejemplo de creación de un entorno chroot
sudo mkdir /var/chroot
sudo debootstrap jammy /var/chroot
sudo chroot /var/chroot
Recomendaciones de Seguridad
- Siempre validar y sanitizar las entradas del usuario
- Usar restricciones de rutas absolutas
- Implementar principios de privilegio mínimo
- Usar bibliotecas seguras para el manejo de archivos
Mejores Prácticas de Seguridad de LabEx
En LabEx, recomendamos un enfoque multicapa para prevenir la travesía de rutas:
- Implementar una validación completa de entradas
- Usar prácticas de codificación segura
- Auditar y probar periódicamente los mecanismos de acceso a archivos
Manejo de Errores
Implementar mensajes de error genéricos para prevenir la divulgación de información:
def safe_file_access(file_path):
try:
## Lógica de acceso seguro al archivo
with open(file_path, 'r') as file:
return file.read()
except (IOError, PermissionError):
## Mensaje de error genérico
return "Acceso denegado"