/

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_rewrite activé.
  • AllowOverride All défini pour la racine des documents, afin que .htaccess soit lu du tout - certains hébergeurs mettent cela par défaut à None, ce qui fait silencieusement échouer chaque URL propre avec une erreur 404.