
Proyecto de modernización, seguridad y actualización de PHPost
🚧 PROYECTO EN DESARROLLO
Estoy trabajando en una modernización progresiva de PHPost para adaptarlo a versiones actuales de PHP, mejorar su seguridad y reorganizar su arquitectura interna.
El objetivo no es simplemente cambiar el diseño, sino renovar el funcionamiento interno del sistema sin perder la compatibilidad con las funciones principales de PHPost.
Cita:Importante: el proyecto todavía se encuentra en desarrollo.
Las versiones actuales están destinadas a pruebas, revisión de código y colaboración. Todavía no se recomienda utilizarlas en sitios públicos o servidores de producción.
🎯 Objetivos del proyecto
- Actualizar el código para versiones modernas de PHP.
- Mejorar la seguridad general de la plataforma.
- Reducir progresivamente la dependencia del código legacy.
- Separar controladores, servicios, repositorios y modelos.
- Añadir Composer y autoload mediante PSR-4.
- Facilitar el mantenimiento y la creación de nuevos complementos.
- Incorporar pruebas y auditorías automáticas.
- Preparar un sistema de instalación y actualización más fiable.
🏗️ Nueva estructura del proyecto
PHPost/
│
├── app/ # Nuevo núcleo moderno
│ │
│ ├── Cache/ # Sistema de caché
│ ├── Controllers/ # Controladores web y API
│ ├── Database/ # Conexión con la base de datos
│ ├── Http/ # Peticiones y respuestas HTTP
│ ├── Logging/ # Registro de eventos
│ ├── Models/ # Modelos de datos
│ ├── Repositories/ # Consultas SQL y persistencia
│ ├── Security/ # Seguridad y autorización
│ ├── Services/ # Reglas de negocio
│ └── Support/ # Contenedor y utilidades internas
│
├── bootstrap/ # Inicio de la aplicación
├── config/ # Archivos de configuración
├── database/
│ └── migrations/ # Migraciones e índices SQL
│
├── deploy/ # Configuración de producción
├── public/ # Punto de entrada público
├── scripts/ # Auditorías automáticas
├── storage/ # Caché, logs y archivos privados
├── tests/ # Pruebas automáticas
│
├── inc/ # Código original en migración
│ ├── class/
│ └── php/
│
├── composer.json
├── phpunit.xml
├── phpstan.neon
├── README.md
└── MIGRATION.mdLa carpeta app/ contiene el nuevo código moderno. La carpeta inc/ todavía conserva partes del sistema original que están siendo migradas de forma progresiva.
✅ Trabajo realizado
- Composer y PSR-4 para cargar las clases automáticamente.
- Nuevo Front Controller y sistema de rutas.
- Configuración separada de la lógica del sistema.
- Conexión moderna con la base de datos.
- Repositorios y servicios para reducir consultas SQL duplicadas.
- Modernización de categorías y subcategorías.
- Modernización de comunidades, miembros y rangos.
- Lectura y escritura moderna de publicaciones.
- Comentarios, respuestas, votos y favoritos.
- Mensajes privados y notificaciones.
- Mejoras en autenticación, sesiones y recuperación de contraseña.
- Protecciones contra CSRF, XSS, IDOR y SQL Injection.
- Control de permisos y autorización por propietario o rango.
- Limitación de peticiones mediante Rate Limiting.
- Subida segura de imágenes con validación real del contenido.
- Generación de miniaturas e imágenes WebP.
- Nombres aleatorios y bloqueo de ejecución en uploads.
- Sistema de caché y registro de eventos de seguridad.
- Análisis estático mediante PHPStan.
- Pruebas automáticas iniciales mediante PHPUnit.
- Auditorías de seguridad y preparación para producción.
🔐 Mejoras de seguridad
Durante la modernización se han añadido controles para reducir riesgos comunes en aplicaciones PHP antiguas:
- Consultas preparadas en los nuevos repositorios.
- Protección CSRF en acciones sensibles.
- Filtrado y escape contra XSS.
- Control de propiedad para evitar accesos IDOR.
- Regeneración y rotación de sesiones.
- Tokens de recuperación almacenados mediante hash.
- Respuestas genéricas para evitar enumeración de cuentas.
- Redirecciones internas validadas.
- Control de frecuencia en login, recuperación, API y uploads.
- Validación de imágenes mediante Fileinfo y GD.
- Escaneo de secretos y patrones potencialmente peligrosos.
- Auditoría automática de dependencias legacy.
Cita:Estas mejoras reducen considerablemente la superficie de ataque, pero todavía no constituyen una garantía de ausencia total de vulnerabilidades. El proyecto deberá superar pruebas funcionales y auditorías adicionales antes de una versión estable.
📊 Estado aproximado del desarrollo
Arquitectura moderna █████████░ 90 %
Seguridad █████████░ 90 %
Migración del código ████████░░ 80 %
Pruebas y estabilización ██████░░░░ 60 %
Documentación ████████░░ 80 %Los porcentajes son orientativos y representan el progreso general. No significan que cada apartado esté completamente terminado.
🧩 Trabajo pendiente
- Migrar completamente las clases antiguas tsPosts, tsUser y tsAdmin.
- Sustituir las consultas SQL que todavía permanecen dentro de inc/.
- Conectar todos los endpoints antiguos con los nuevos servicios.
- Terminar la modernización del panel de administración.
- Migrar los sistemas antiguos de avatares, recortes e imágenes de comunidades.
- Ampliar las pruebas automáticas.
- Realizar pruebas completas en un servidor de staging.
- Comprobar migraciones con bases de datos reales.
- Corregir los errores encontrados durante las pruebas.
- Preparar un instalador y un actualizador para usuarios finales.
- Publicar una primera versión Release Candidate.
🗺️ Próximas etapas
Etapa 25
└── Migración completa del sistema de publicaciones
Etapa 26
└── Migración de usuarios, rangos y administración
Etapa 27
└── Eliminación de dependencias legacy y corrección de errores
Etapa 28
└── Pruebas completas y primera Release Candidate
Versión RC
└── Pruebas públicas realizadas por la comunidad
Versión estable
└── Publicación recomendada para instalaciones nuevas💻 Requisitos previstos
- PHP 8.1 o superior
- MySQL 5.7+ o MariaDB 10.4+
- Composer 2
- Extensiones PHP: mysqli, mbstring, GD y Fileinfo.
- Servidor Apache o Nginx con HTTPS.
Los requisitos definitivos podrán cambiar antes de la primera versión estable.
⚠️ Aviso para los usuarios
Cita:Esta versión todavía no está disponible como lanzamiento estable.
No se recomienda instalar los paquetes de desarrollo en páginas públicas, comunidades activas o servidores de producción.
Cuando exista una versión suficientemente estable, se publicará una Release Candidate para que pueda ser probada por la comunidad.
🤝 Cómo colaborar
La comunidad puede ayudar de diferentes formas:
- Probando el proyecto en un servidor local o de staging.
- Revisando el código y proponiendo mejoras.
- Informando de errores reproducibles.
- Probando la compatibilidad con diferentes versiones de PHP y MySQL.
- Ayudando con documentación y tutoriales.
- Proponiendo mejoras para la instalación y actualización.
Para informar de un error, incluye siempre que sea posible:
Versión o etapa probada:
Versión de PHP:
Versión de MySQL o MariaDB:
Sistema operativo:
Servidor web:
Módulo afectado:
Pasos para reproducir el error:
Mensaje de error:
Comportamiento esperado:En este tema iré publicando los avances, cambios importantes, capturas y futuras versiones de prueba.
Estado actual: desarrollo activo y estabilización
Gracias a todos los que quieran aportar ideas, pruebas o sugerencias.


Facebook
Twitter
Reddit
Digg
del.icio.us
Tumblr
Pinterest
Blogger
Fark
LinkedIn
Mix
Google