SEGURIDAD PARA PUBLICAR EN INTERNET
=======================================

1. Ejecute actualizar_bd_seguridad.sql una sola vez.

2. NO use root para la aplicación. Cree el usuario MySQL limitado indicado en el SQL.

3. Configure variables de entorno en Apache, hosting o PHP-FPM:
   SOL_DB_HOST, SOL_DB_NAME, SOL_DB_USER, SOL_DB_PASS
   SOL_APP_SECRET (mínimo 64 caracteres aleatorios)
   SOL_ADMIN_USER
   SOL_ADMIN_PASSWORD_HASH
   SOL_CORREO_REMITENTE y correos de sucursales

   Genere secreto:
   php -r "echo bin2hex(random_bytes(32)), PHP_EOL;"

   Genere hash de contraseña administrativa:
   php -r "echo password_hash('SU_CLAVE_LARGA', PASSWORD_DEFAULT), PHP_EOL;"

4. Use HTTPS obligatorio. Cuando el certificado funcione, descomente las tres líneas
   de redirección HTTPS en .htaccess.

5. Verifique que Apache permita AllowOverride All para que .htaccess funcione.

6. En producción use:
   display_errors=Off
   log_errors=On
   expose_php=Off
   upload_max_filesize y post_max_size bajos si no hay archivos.

7. lista.php y detalle.php requieren inicio de sesión. La sesión expira tras 30 minutos.

8. Protecciones incluidas:
   - consultas preparadas contra SQL Injection
   - escape de salida contra XSS
   - token CSRF
   - honeypot y tiempo mínimo contra bots
   - máximo 5 solicitudes por IP/hora usando hash de IP
   - encabezados CSP, HSTS (solo HTTPS), anti-clickjacking y no-cache
   - errores técnicos solo en logs
   - acceso administrativo con password_hash/password_verify

9. Recomendado antes de producción:
   - Cloudflare Turnstile o reCAPTCHA
   - copias de seguridad cifradas
   - política de privacidad y consentimiento para datos personales
   - retención y eliminación programada de CURP/RFC/INE
   - SMTP autenticado en vez de mail()
   - escaneo con OWASP ZAP en un ambiente de pruebas
