Despliegue en producción
Una lista de verificación previa al lanzamiento - todo lo que hay en src/Config.php que por defecto tiene un valor cómodo para el desarrollo local, no para producción.
1. Configura credenciales de base de datos reales
En src/Config.php, apunta XcrudConfig a tu base de datos de producción, no a la local usada durante el desarrollo:
public static string $dbHost = 'your-db-host';
public static string $dbName = 'your_production_db';
public static string $dbUser = 'your_db_user';
public static string $dbPass = 'a-real-password';
2. Genera un $appSecret fuerte
$appSecret es la clave HMAC que firma cada condición where()/subselect()/pass_var() y cada payload de condición lógica enviado al navegador. Firmarlos permite que esos valores viajen de forma segura a través del cliente - ajax_crud.php se niega a aplicar uno cuya firma no coincida. Si este secreto se filtra (o se deja en su valor por defecto), cualquiera puede falsificar un valor firmado y eludir la restricción que estaba pensada para imponer - por ejemplo, editando una URL para escapar del alcance where('status', '=', 'active') propio de una página.
public static string $appSecret = 'change-this-secret-before-production';
Reemplázalo por una cadena larga, aleatoria y única para tu instalación - por ejemplo, el resultado de bin2hex(random_bytes(32)) - y nunca subas el valor real a tu control de versiones.
3. Revisa el límite de seguridad
$blacklistedTables y $blacklistedColumns en src/Config.php son el verdadero límite de seguridad de la instalación - no la llamada ->columns() de ninguna página en particular, que solo cambia lo que esa página muestra. Toda tabla real de la base de datos conectada es accesible por defecto a través de ajax_crud.php; revisa ambos arrays contra tu propio esquema antes de salir a producción. Consulta Seguridad: listas negras de tablas y columnas para el modelo completo.
4. Restringe $allowedOrigins
$allowedOrigins es la lista blanca CORS que controla qué orígenes pueden llamar a ajax_crud.php entre dominios. El valor por defecto incluye entradas de localhost para el desarrollo local - restríngelo a tu(s) dominio(s) de producción real(es) antes del lanzamiento:
public static array $allowedOrigins = ['https://app.example.com'];
Consulta Frontends desacoplados y CORS si tu frontend y tu backend se sirven desde orígenes distintos.
5. Desactiva $demo
$demo vale true por defecto, lo que añade un botón "View Code" a cada formulario de Añadir/Editar que muestra a los visitantes el código PHP en bruto de la página que lo definió - útil para un patio de pruebas público, no para un despliegue real donde el código fuente de la página no debería exponerse a los usuarios finales:
public static bool $demo = false;
6. Confirma que mod_rewrite está realmente activado
Cada petición pasa por core/router.php a través de una única regla de reescritura en el propio .htaccess del proyecto. Confirma que la configuración de Apache en producción realmente la respeta:
mod_rewriteactivado.AllowOverride Allestablecido para la raíz de documentos, para que.htaccessse lea en absoluto - algunos hostings lo dejan enNonepor defecto, lo que hace que cada URL limpia devuelva 404 en silencio.