Déployer en production
Une liste de contrôle avant lancement - tout ce dans src/Config.php qui prend par défaut une valeur pratique pour le développement local, mais pas pour la production.
1. Définir de vrais identifiants de base de données
Dans src/Config.php, faites pointer XcrudConfig vers votre base de données de production, pas celle locale utilisée pendant le développement :
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. Générer un $appSecret robuste
$appSecret est la clé HMAC qui signe chaque condition where()/subselect()/pass_var() et chaque charge utile de condition logique envoyée au navigateur. La signature permet à ces valeurs de transiter en toute sécurité par le client - ajax_crud.php refuse d'appliquer une valeur dont la signature ne correspond pas. Si ce secret fuit (ou reste à sa valeur par défaut), n'importe qui peut forger une valeur signée et contourner la restriction qu'elle était censée imposer - par exemple en modifiant une URL pour échapper au périmètre where('status', '=', 'active') propre à une page.
public static string $appSecret = 'change-this-secret-before-production';
Remplacez-le par une chaîne longue, aléatoire et propre à votre installation - par exemple le résultat de bin2hex(random_bytes(32)) - et ne commitez jamais la valeur réelle dans le contrôle de version.
3. Vérifier la frontière de sécurité
$blacklistedTables et $blacklistedColumns dans src/Config.php constituent la véritable frontière de sécurité de l'installation - et non l'appel ->columns() propre à une page, qui ne change que ce qu'une page affiche. Chaque véritable table de la base de données connectée est accessible via ajax_crud.php par défaut ; vérifiez les deux tableaux par rapport à votre propre schéma avant la mise en ligne. Voyez Sécurité : liste noire des tables & colonnes pour le modèle complet.
4. Resserrer $allowedOrigins
$allowedOrigins est la liste blanche CORS qui contrôle quelles origines peuvent appeler ajax_crud.php en cross-domain. La valeur par défaut est fournie avec des entrées localhost pour le développement local - réduisez-la à votre/vos vrai(s) domaine(s) de production avant le lancement :
public static array $allowedOrigins = ['https://app.example.com'];
Voyez Frontends découplés & CORS si votre frontend et votre backend sont servis depuis des origines différentes.
5. Désactiver $demo
$demo vaut true par défaut, ce qui ajoute un bouton « Voir le code » à chaque formulaire d'ajout/édition, montrant aux visiteurs le source PHP brut de la page qui l'a défini - utile pour un bac à sable public, pas pour un vrai déploiement où le code source des pages ne doit pas être exposé aux utilisateurs finaux :
public static bool $demo = false;
6. Confirmer que mod_rewrite est bien activé
Chaque requête passe par core/router.php via une seule règle de réécriture dans le .htaccess propre au projet. Confirmez que votre configuration Apache de production l'honore réellement :
mod_rewriteactivé.AllowOverride Alldéfini pour la racine des documents, afin que.htaccesssoit lu du tout - certains hébergeurs mettent cela par défaut àNone, ce qui fait silencieusement échouer chaque URL propre avec une erreur 404.