Licence EUPL-1.2 + hardening anti-abus
P1 — Licence : - Ajout du fichier LICENSE (EUPL-1.2 complet) - README mis à jour : section licence, table docs, vars d'environnement - En-têtes EUPL ajoutés dans les fichiers sources principaux (Flask, React) P2 — Hardening anti-abus : - Rate limiting Redis-ready (REDIS_URL) avec clé fingerprint + IP - Honeypot anti-bot : champ caché côté client + vérification serveur - Fingerprinting non-PII via FingerprintJS (hash SHA-256, colonne ideas.fingerprint_hash) - Cooldown session : cookie httpOnly signé HMAC-SHA256 (SECRET_KEY requis) - Détection de flood : alerte WARNING si > FLOOD_THRESHOLD soumissions / 5 min - hCaptcha stub : intégré, activable via HCAPTCHA_SECRET_KEY + VITE_HCAPTCHA_SITE_KEY - Nouvelles dépendances : redis (backend), @fingerprintjs/fingerprintjs + @hcaptcha/react-hcaptcha (frontend) - docs/SECURITE_ANTI_ABUS.md : documentation complète des seuils et de la configuration Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -94,10 +94,28 @@ Le site écoute sur le **port HTTP 8080**. Vous gérez le HTTPS en amont.
|
||||
## Variables d'environnement clés
|
||||
|
||||
```env
|
||||
# Base de données
|
||||
DATABASE_URL=postgresql://user:pass@localhost:5432/voix_du_peuple
|
||||
|
||||
# IA (Mistral recommandé — souveraineté européenne)
|
||||
MISTRAL_API_KEY=sk-...
|
||||
SESSION_SECRET=une-longue-chaine-aleatoire
|
||||
|
||||
# Sécurité (obligatoire en production)
|
||||
SECRET_KEY=une-longue-chaine-aleatoire-minimum-32-chars
|
||||
ADMIN_SECRET=votre-mot-de-passe-admin
|
||||
|
||||
# Anti-abus (optionnel — valeurs par défaut raisonnables)
|
||||
REDIS_URL=redis://localhost:6379/0
|
||||
RATE_LIMIT_CONTRIBUTIONS=5 per minute;3 per hour
|
||||
CONTRIBUTION_COOLDOWN_SECONDS=3600
|
||||
FLOOD_THRESHOLD=10
|
||||
|
||||
# hCaptcha (optionnel — recommandé en production)
|
||||
HCAPTCHA_SECRET_KEY=votre-cle-secrete
|
||||
|
||||
# Frontend
|
||||
VITE_APP_URL=https://votredomaine.fr
|
||||
VITE_HCAPTCHA_SITE_KEY=votre-cle-de-site # Nécessite rebuild frontend
|
||||
```
|
||||
|
||||
---
|
||||
@@ -130,9 +148,18 @@ Prérequis : secret `GITEA_TOKEN` configuré dans Replit → Secrets.
|
||||
| [`docs/WIKI.md`](docs/WIKI.md) | Page wiki — présentation générale |
|
||||
| [`docs/INSTALL_ROCKY.md`](docs/INSTALL_ROCKY.md) | Installation sur RockyLinux 9 |
|
||||
| [`docs/GITEA_TUTO.md`](docs/GITEA_TUTO.md) | Synchronisation Replit → Gitea |
|
||||
| [`docs/SECURITE_ANTI_ABUS.md`](docs/SECURITE_ANTI_ABUS.md) | Protections anti-bot, flood, rate limiting, hCaptcha |
|
||||
|
||||
---
|
||||
|
||||
## Licence
|
||||
|
||||
Projet personnel — tous droits réservés. Contactez l'auteur pour toute utilisation ou réutilisation.
|
||||
Ce projet est publié sous **[European Union Public Licence v. 1.2 (EUPL-1.2)](LICENSE)**.
|
||||
|
||||
L'EUPL-1.2 est la licence open source officielle de l'Union européenne. Elle est :
|
||||
- **Compatible** avec la GPL v2/v3, l'AGPL v3 et la MPL 2.0 (cf. Appendice)
|
||||
- **Reconnue** par la Commission européenne et les institutions publiques de l'UE
|
||||
- **Adaptée** aux projets civiques et associatifs souhaitant une réutilisation libre sous condition de réciprocité (copyleft)
|
||||
- **Disponible** en 23 langues officielles de l'UE — voir [joinup.ec.europa.eu](https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12)
|
||||
|
||||
Ce choix est cohérent avec la posture souveraineté numérique européenne du projet et permet à toute association, mairie ou collectif de reprendre et déployer cet outil sous les mêmes conditions.
|
||||
|
||||
Reference in New Issue
Block a user