Versions et sécurité

Sommaire

Versions

Lues dans le Cargo.toml de Runique à chaque version publiée.

ÉlémentVersion
Rust (minimum)1.94
Édition Rust2024
axum0.8.9
tower0.5.3
tower-http0.7.1
tower-sessions0.15.0
tokio1
sea-orm2.0.4 (épinglée : utiliser exactement celle-ci)
sea-orm-migration2.0.4 (épinglée : utiliser exactement celle-ci)
sea-query1.0.1
tera2.1
serde1.0
chrono0.4.45
uuid1.29.1
argon20.6
lettre0.11.22

Moteurs testés

La suite de tests passe sur ces moteurs (images de docker-compose.yml).

MoteurImage de test
PostgreSQLpostgres:16-alpine
MariaDBmariadb:11
SQLiteen mémoire, embarqué

Compatibilité

Les tableaux Versions et Moteurs testés de la page sont générés depuis Cargo.toml et docker-compose.yml. Ce fichier ne contient que la partie écrite à la main.

Réglages par défaut

Ce que Runique fait sans réglage de ta part. Chaque valeur se change, sur la page indiquée.

ÉlémentPar défautPage
Échappement des templates (Tera)actif sur .html et .xml ; {{ var }} toujours échappé, sauf avec le filtre safeSyntaxe des templates
CSRFexigé pour toute méthode sauf GET et HEADCSRF
CSPdefault-src 'none', script-src 'self', style-src 'self' 'unsafe-inline'CSP
Session anonyme5 minutes d'inactivité, en mémoire seulementSessions
Session connectée24 heures d'inactivité, aussi enregistrée en baseSessions
LoginGuard5 essais, puis 5 minutes de blocageLoginGuard
RateLimiter60 requêtes par minute, sur les routes où il est attachéRate limit
Mots de passehachés avec Argon2Mots de passe
Taille des requêtesformulaire et JSON : 2 Mo lus en mémoire ; envoi de fichiers : 100 Mo (RUNIQUE_MAX_BODY_MB)Assets et médias

Bonnes pratiques

  • Utiliser exactement la version de SeaORM épinglée ci-dessus dans ton projet et dans son crate migration/ : runique new l'écrit pour toi.
  • Générer les migrations en développement (runique makemigrations), les commiter, et n'appliquer en production que migration up.
  • Tester sur le moteur de production, pas seulement sur SQLite : certains comportements (fuseaux horaires, casse des textes, index des clés étrangères) diffèrent d'un moteur à l'autre.
  • Sous MySQL et MariaDB, sauvegarder la base avant chaque migration up : un CREATE ou un ALTER n'y est jamais annulé.

À éviter

  • Mélanger une autre version de SeaORM ou de sea-query dans le même projet : les types ne correspondraient plus.
  • Lancer runique makemigrations en production.
  • Écrire du SQL brut là où search!, search_cond! ou les méthodes de SeaORM suffisent : le placeholder ? casse Postgres.
  • Mettre | safe sur une valeur qui vient d'un visiteur.