Application web sécurisée pour signer des fichiers PDF électroniquement avec gestion de comptes utilisateurs.
URL de production : https://signatureelectronique.taaazzz-prog.fr
- â Upload de fichiers PDF (drag & drop ou sĂ©lection)
- âïž CrĂ©ation de signature Ă la souris ou au tactile
- đ Positionnement personnalisable de la signature
- đ Support multi-pages
- đŸ TĂ©lĂ©chargement automatique du PDF signĂ©
- đš Interface moderne et intuitive avec mode sombre
- đ€ Inscription et connexion sĂ©curisĂ©es
- đ§ Validation d'email avec regex
- đ Hashing bcrypt pour les mots de passe
- đ Historique des signatures
- đ Statistiques personnalisĂ©es
- âïž PrĂ©fĂ©rences personnalisables (mode sombre, notifications, auto-save)
- đĄïž Protection anti-bot avec Google reCAPTCHA v3
- đ Hashing bcrypt (12 rounds) pour tous les mots de passe
- đ Migration automatique des anciens mots de passe SHA-256
- đ SECRET_KEY pour la sĂ©curitĂ© des sessions
- â Validation stricte des emails
- Python 3.11 ou supérieur
- pip (gestionnaire de paquets Python)
- Docker (optionnel, pour le déploiement)
- Compte Google reCAPTCHA v3 (pour la protection anti-bot)
- Cloner ou naviguer vers le projet
cd "d:\WEB API\SignatureElectronique"- Créer un environnement virtuel (recommandé)
python -m venv venv
.\venv\Scripts\Activate.ps1- Installer les dépendances
pip install -r requirements.txt- Configurer les variables d'environnement
# Copier le fichier d'exemple
Copy-Item .env.example .env
# Ăditer .env et configurer :
# - SECRET_KEY (générer avec: python -c "import secrets; print(secrets.token_urlsafe(32))")
# - RECAPTCHA_SECRET_KEY (obtenir sur https://www.google.com/recaptcha/admin/create)- Démarrer le serveur
python app.py- Ouvrir votre navigateur
http://localhost:5000
- Cliquez sur "Inscription" dans la navigation
- Remplissez le formulaire (nom, email, mot de passe)
- La protection reCAPTCHA v3 vĂ©rifie automatiquement que vous n'ĂȘtes pas un bot
- Connectez-vous avec vos identifiants
-
Charger un PDF
- Glissez-déposez votre fichier PDF dans la zone prévue
- Ou cliquez sur "Choisir un fichier PDF"
-
Créer votre signature
- Dessinez votre signature sur le canvas blanc
- Utilisez "Effacer" pour recommencer
- Utilisez "Annuler" pour supprimer le dernier trait
-
Configurer la position
- Sélectionnez la page à signer
- Ajustez les positions X et Y
- Modifiez la largeur si nécessaire
-
Signer
- Cliquez sur "Signer le PDF"
- Le fichier signé se téléchargera automatiquement
- Historique : Consultez toutes vos signatures passées
- Statistiques : Visualisez vos statistiques de signature
- Compte : Gérez vos informations et préférences
- Mode sombre/clair
- Notifications
- Auto-save des signatures
- Mode tactile optimisé
SignatureElectronique/
âââ app.py # Serveur Flask (API backend)
âââ database.py # Gestion base de donnĂ©es SQLite
âââ templates/
â âââ index.html # Page d'accueil
â âââ base.html # Template de base
â âââ account.html # Page compte utilisateur
â âââ history.html # Historique des signatures
â âââ stats.html # Statistiques
âââ static/
â âââ css/ # Feuilles de style (+ mode sombre)
â âââ js/ # Scripts JavaScript
âââ uploads/ # PDFs uploadĂ©s (auto, ignorĂ© git)
âââ signed/ # PDFs signĂ©s (auto, ignorĂ© git)
âââ signatures/ # Signatures temporaires (auto, ignorĂ© git)
âââ .env # Variables d'environnement (SECRET!)
âââ .env.example # Template de configuration
âââ docker-compose.yml # Configuration Docker
âââ Dockerfile # Image Docker
âââ requirements.txt # DĂ©pendances Python
âââ README.md # Documentation
# Clé secrÚte Flask (OBLIGATOIRE EN PRODUCTION)
SECRET_KEY=votre-cle-secrete-unique-32-caracteres
# ClĂ© secrĂšte reCAPTCHA v3 (RECOMMANDĂ)
RECAPTCHA_SECRET_KEY=votre-cle-secrete-recaptcha
# Chemin de la base de données
DATABASE_PATH=/app/data/signature_app.db- Créez un compte sur Google reCAPTCHA Admin
- Choisissez reCAPTCHA v3
- Ajoutez vos domaines (localhost pour dev, votre domaine pour prod)
- Récupérez :
- Site Key (publique) â Ă mettre dans
static/js/common.js - Secret Key (privĂ©e) â Ă mettre dans
.env
- Site Key (publique) â Ă mettre dans
Par défaut, la taille maximale des fichiers est de 16 MB. Pour modifier :
app.config['MAX_CONTENT_LENGTH'] = 32 * 1024 * 1024 # 32MB# Construction de l'image
docker-compose build
# Lancement
docker-compose up -d
# ArrĂȘt
docker-compose down- Bcrypt : Hashing des mots de passe avec 12 rounds
- Migration automatique : Anciens mots de passe SHA-256 convertis en bcrypt
- Validation email : Regex stricte pour les emails
- SECRET_KEY : Protection des sessions Flask
- reCAPTCHA v3 : Détection intelligente des bots sans CAPTCHA visible
- Score adaptatif : Seuil de 0.5 pour bloquer les bots suspects
- Pas de limite de requĂȘtes pour les utilisateurs lĂ©gitimes
- Fichiers stockés avec des noms UUID uniques
- Validation stricte des types de fichiers (PDF uniquement)
- Limite de taille de fichier configurée (16 MB par défaut)
.envdans.gitignore(secrets jamais commités)- Base de données SQLite avec transactions sécurisées
pip install -r requirements.txtModifiez le port dans app.py ou arrĂȘtez l'application utilisant le port 5000
Exécutez PowerShell en tant qu'administrateur
- Les fichiers uploadés et signés sont stockés localement
- Pour la production, ajoutez un systĂšme de nettoyage automatique des anciens fichiers
- Considérez l'ajout d'une authentification pour un usage professionnel
- Les signatures sont en format PNG transparent
- Authentification utilisateur
- Base de données pour historique
- Statistiques personnalisées
- Mode sombre
- Protection anti-bot (reCAPTCHA v3)
- Hashing sécurisé des mots de passe (bcrypt)
- Prévisualisation PDF intégrée
- Signatures prédéfinies sauvegardées
- Support de multiples signatures par document
- Export en différents formats
- Certificats numériques (PKI)
- API REST documentée
- Notifications email
- Partage de documents signés
Projet libre d'utilisation pour usage personnel et professionnel.
Pour toute question ou problÚme, créez une issue dans le projet.