Sécurité
La sécurité n'est pas une option. River intègre nativement plusieurs couches de protection.
Protection CSRF
Cross-Site Request Forgery. River génère et valide automatiquement les tokens pour les requêtes POST, PUT, DELETE.
Dans vos formulaires
Utilisez l'injection du service Csrf :
// Contrôleur
$token_field = $this->csrf->field(); // <input type="hidden"...>
// Vue
<form method="POST">
<?= $csrf_field ?>
...
</form>
Sanitizer
Nettoyez les entrées utilisateur pour prévenir les failles XSS.
use River\Sanitizer;
$email = Sanitizer::email($_POST['email']);
$comment = Sanitizer::clean($_POST['comment']); // Échappe le HTML
$slug = Sanitizer::slug('Mon Titre !'); // mon-titre
Rate Limiting
Protégez vos routes sensibles (login) contre le brute-force.
// Limite globale (config.php : rate_limit.requests / rate_limit.window)
$router->post('login', 'AuthController::login')
->middleware(River\Middleware\Rate_limit_middleware::class);
// Limite par route : 5 tentatives sur 300 secondes
$router->post('login', 'AuthController::login')
->middleware(River\Middleware\Rate_limit_middleware::class . ':5,300');
Sans paramètres : utilise la config globale (défaut 60 req/min). Avec :requests,window : surcharge pour cette route uniquement.
Headers de Sécurité
River ajoute automatiquement :
X-Content-Type-Options: nosniffX-Frame-Options: SAMEORIGINX-XSS-Protection: 1; mode=block