Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Repository files navigation

Version 1.3.2 Symfony 7.4 LTS PHP 8.2+ License MIT

🚀 Passphrase.fr — GĂ©nĂ©rateur de mots de passe sĂ©curisĂ©s en français.
🐙 Code source sur GitHub

Générateur de Passphrases complexes en Français

Une application web développée avec Symfony pour générer des mots de passe sécurisés et personnalisables. Cet outil permet aux utilisateurs de définir le nombre de mots, les séparateurs, les caractÚres spéciaux et la longueur du mot de passe. Il offre également une estimation de l'entropie pour évaluer la sécurité des mots de passe générés.

Fonctionnalités

  • GĂ©nĂ©ration de mots de passe sĂ©curisĂ©s : GĂ©nĂ©ration alĂ©atoire de mots de passe robustes selon des critĂšres dĂ©finis par l'utilisateur.
  • Calcul de l'entropie : L'algorithme calcule l'entropie du mot de passe (mesure de la force), avec un retour visuel basĂ© sur des classes Bootstrap pour indiquer la robustesse du mot de passe (faible, moyen, fort).
  • API RESTful : Une API est disponible pour permettre Ă  d'autres applications de rĂ©cupĂ©rer un ou plusieurs mots de passe via une requĂȘte HTTP. Les utilisateurs peuvent personnaliser la gĂ©nĂ©ration de mots de passe via les paramĂštres de l'API (nombre de mots de passe, longueur, caractĂšres spĂ©ciaux, etc.). Testez l'API avec ce lien.
  • Cookie de sauvegarde des prĂ©fĂ©rences : Les prĂ©fĂ©rences utilisateur (comme le nombre de mots, les sĂ©parateurs, etc.) sont sauvegardĂ©es dans un cookie afin de retrouver les mĂȘmes paramĂštres lors de la prochaine utilisation de l'application.

Extension Chrome

Une extension Chrome est disponible pour accéder rapidement au générateur de mots de passe directement depuis votre navigateur.

Installation locale

Avec Symfony CLI (développement)

# 1. Cloner le dépÎt
git clone https://github.com/AlexandreMonchain/Passphrase.git
cd Passphrase

# 2. Installer les dépendances
composer install

# 3. Créer le fichier .env
cp .env.example .env

# 4. Lancer le serveur
symfony server:start --no-tls

# 5. Ouvrir http://127.0.0.1:8000

Prérequis: PHP 8.2+, Composer 2.0+

Avec Docker (production-ready)

# Démarrer le conteneur (clone + install + run automatique)
APP_SECRET=votre_secret_ici docker compose up -d --build

# Ouvrir http://localhost:8000

Prérequis: Docker 20.10+, Docker Compose v2

Variables d'environnement :

Variable Obligatoire Défaut Description
APP_SECRET ✅ — ClĂ© secrĂšte Symfony (sessions, CSRF). ChaĂźne alĂ©atoire longue.
GIT_BRANCH main Branche GitHub Ă  cloner au build
GIT_REPO repo officiel URL du dépÎt (utile pour un fork)
CACHE_BUST 1 Incrémenter pour forcer un nouveau clone du code au build (invalide le cache Docker de l'étape git clone)
PORT 8000 Port exposé sur la machine hÎte
TRUSTED_PROXIES (vide) IP(s) du reverse proxy. Nécessaire pour que Symfony détecte HTTPS derriÚre Traefik/Nginx/Caddy et que les cookies Secure fonctionnent correctement. Ex: 127.0.0.1 ou REMOTE_ADDR

Personnalisation (optionnel):

# Utiliser la branche dev
GIT_BRANCH=dev APP_SECRET=votre_secret_ici docker compose up -d --build

# Utiliser un fork perso
GIT_REPO=https://github.com/votreusername/Passphrase.git APP_SECRET=votre_secret_ici docker compose up -d --build

# Récupérer la derniÚre version du code (force un nouveau clone)
CACHE_BUST=2 APP_SECRET=votre_secret_ici docker compose up -d --build

# Changer le port d'écoute (défaut: 8000)
PORT=9000 APP_SECRET=votre_secret_ici docker compose up -d --build

# DerriĂšre un reverse proxy HTTPS (Traefik, Nginx, Caddy...)
TRUSTED_PROXIES=REMOTE_ADDR APP_SECRET=votre_secret_ici docker compose up -d --build

Commandes utiles:

# Voir les logs
docker compose logs -f web

# Accéder au container
docker compose exec web sh

# ArrĂȘter
docker compose down

# Rebuild complet (nouvelle version)
docker compose up -d --build

Qu'est-ce qui se passe au démarrage:

  1. 🔹 Build de l'image (tĂ©lĂ©charge PHP 8.4, Apache)
  2. đŸ“„ Clone depuis GitHub (branche main par dĂ©faut)
  3. 📩 Installation des dĂ©pendances Composer
  4. đŸ§č Warmup du cache Symfony
  5. ✅ DĂ©marrage d'Apache

API REST

Endpoint: GET /api/passwords

Exemple rapide

curl "https://passphrase.fr/api/passwords?count=3&nb_mots=2&longueur_minimale=15"

Réponse :

{
  "passwords": [
    { "password": "Economie-Etrier57:", "length": 18 },
    { "password": "Menton-Pancarte65!", "length": 18 },
    { "password": "Sieger-Distribuer52#", "length": 20 }
  ]
}

ParamĂštres

ParamÚtre Type Défaut Description
count int 6 Nombre de passphrases (1-20)
nb_mots int 2 Mots par passphrase (2-7)
longueur_minimale int 12 Longueur min (8-50)
separateur string random Séparateur (-, _, *, random)
majuscule_debut bool true Majuscule au début
majuscule_aleatoire bool false Majuscules aléatoires
longueur_nombre int 2 Longueur des chiffres (0-5)
caractere_special string random Type spéciaux (random, none, !@#)
caracteres_accentues bool true Inclure accents

Limite : 100 requĂȘtes par minute par IP. HTTP 429 au-delĂ .

Intégration JavaScript

fetch("https://passphrase.fr/api/passwords?count=5&nb_mots=3")
  .then(res => res.json())
  .then(data => data.passwords.forEach(p => console.log(p.password)));

Contribution

Si vous rencontrez des problÚmes ou avez des suggestions d'amélioration, n'hésitez pas à créer une issue ou à soumettre une pull request via le dépÎt GitHub.

Architecture

  • Framework: Symfony 7.4 LTS
  • Runtime: PHP 8.2+ (8.4 dans Docker)
  • Frontend: Twig + Bootstrap 5 + Vanilla JS + Custom CSS Design System
  • Storage: Fichier CSV (dictionnaire de mots français)
  • Container: Docker + Apache

Structure du projet

├── src/
│   ├── Controller/          # Routes et API
│   ├── Service/             # Logique mĂ©tier
│   └── Form/                # Formulaires Symfony
├── templates/               # Pages Twig
├── public/assets/           # CSS/JS
├── config/                  # Configuration Symfony
├── docker/                  # Configuration Docker (Apache, entrypoint)
├── Dockerfile               # Image PHP 8.4 + Apache
├── docker-compose.yml       # Service Web
└── tests/                   # Tests PHPUnit

Performance & Sécurité

  • ✅ CSRF protection (Symfony stateless tokens)
  • ✅ XSS protection (Twig auto-escaping)
  • ✅ GĂ©nĂ©ration cryptographique (random_int, CSPRNG)
  • ✅ Rate limiting API (100 req/min par IP)
  • ✅ Validation stricte des entrĂ©es (formulaire + API)

Déploiement en production

Avec Docker (recommandé)

APP_SECRET=votre_secret_ici docker compose up -d --build
# App dispo sur http://ip_docker:8000

Le conteneur écoute en HTTP interne (port 80, publié sur 8000).

Pour la prod, faites au choix:

  1. Mettre l'app derriĂšre un reverse proxy (Nginx/Caddy/Traefik) qui gĂšre HTTPS en 443.
  2. Modifier la conf pour servir directement en 443 avec un certificat TLS.

Ne JAMAIS exposer une application en HTTP en production.

Licence

MIT License


Passphrase v1.3.2 | © 2024-2026 Alexandre MONCHAIN | GitHub | Chrome Extension

About

A password generator web application built with Symfony, offering customizable options for secure password creation and entropy estimation.

Resources

Stars

12 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages