# 🚀 Guide de Mise Ă  Jour et SĂ©curisation - Blog Duhaz ## ✅ Ce qui a Ă©tĂ© fait ### 1. SĂ©curisation - ✅ CrĂ©ation du fichier `.env` pour les secrets - ✅ CrĂ©ation du fichier `.env.example` comme modĂšle - ✅ Mise Ă  jour de `.gitignore` pour protĂ©ger les secrets - ✅ Modification de `settings.py` pour utiliser les variables d'environnement - ✅ CrĂ©ation de `requirements.txt` avec Django 5.1 LTS ### 2. AmĂ©liorations de sĂ©curitĂ© ajoutĂ©es - SECRET_KEY maintenant dans .env - DEBUG configurable par environnement - ALLOWED_HOSTS configurable - STATIC_ROOT et MEDIA_ROOT configurĂ©s - ParamĂštres de sĂ©curitĂ© prĂȘts pour la production (commentĂ©s) --- ## 📋 Prochaines Étapes ### Étape 1 : Installer les nouvelles dĂ©pendances ```bash # CrĂ©er un environnement virtuel (si pas dĂ©jĂ  fait) python3 -m venv venv source venv/bin/activate # Sur Mac/Linux # Installer les dĂ©pendances pip install -r requirements.txt ``` ### Étape 2 : GĂ©nĂ©rer une nouvelle SECRET_KEY La SECRET_KEY actuelle est exposĂ©e dans Git. GĂ©nĂ©rez-en une nouvelle : ```bash python3 -c "from django.core.management.utils import get_random_secret_key; print(get_random_secret_key())" ``` Copiez la clĂ© gĂ©nĂ©rĂ©e et remplacez-la dans votre fichier `.env`. ### Étape 3 : VĂ©rifier les migrations ```bash python manage.py makemigrations python manage.py migrate ``` ### Étape 4 : Tester le site ```bash python manage.py runserver ``` Visitez http://127.0.0.1:8000/blog/ pour vĂ©rifier que tout fonctionne. --- ## ⚠ ProblĂšmes Potentiels de CompatibilitĂ© ### 1. django-trumbowyg VĂ©rifiez la compatibilitĂ© avec Django 5.1. Si problĂšme : ```bash pip install --upgrade django-trumbowyg ``` ### 2. MĂ©thodes dĂ©prĂ©ciĂ©es Ă  corriger #### Dans `blog/models.py` et `core/models.py` Supprimer les mĂ©thodes `__unicode__` (Python 2) : ```python # ❌ À SUPPRIMER def __unicode__(self): return self.cb_titre # ✅ Garder seulement def __str__(self): return '%s' % (self.cb_titre) ``` ### 3. django.utils.timezone Si erreurs avec les dates, importer : ```python from django.utils import timezone ``` --- ## 🔒 Configuration pour la Production Quand vous dĂ©ployez en production, modifiez `.env` : ```env SECRET_KEY=votre-nouvelle-cle-secrete-generee DEBUG=False ALLOWED_HOSTS=votre-domaine.com,www.votre-domaine.com ``` Et dĂ©commentez dans `settings.py` : ```python SECURE_SSL_REDIRECT = True SESSION_COOKIE_SECURE = True CSRF_COOKIE_SECURE = True SECURE_BROWSER_XSS_FILTER = True SECURE_CONTENT_TYPE_NOSNIFF = True X_FRAME_OPTIONS = 'DENY' ``` --- ## 🐛 Si ProblĂšmes ### Erreur "No module named 'dotenv'" ```bash pip install python-dotenv ``` ### Erreur avec les templates VĂ©rifiez que `DIRS` dans TEMPLATES pointe vers les bons dossiers. ### Erreur 500 en production - VĂ©rifiez DEBUG=False - Collectez les fichiers statiques : `python manage.py collectstatic` - VĂ©rifiez les logs Django --- ## 📝 TODO - AmĂ©liorations Futures - [ ] Migrer vers PostgreSQL (recommandĂ© pour production) - [ ] Ajouter django-debug-toolbar pour le dĂ©veloppement - [ ] Configurer un serveur WSGI (Gunicorn) - [ ] Ajouter WhiteNoise pour les fichiers statiques - [ ] Optimiser les requĂȘtes (select_related, prefetch_related) - [ ] Ajouter un systĂšme de cache (Redis) - [ ] Corriger les vulnĂ©rabilitĂ©s XSS potentielles - [ ] Migrer vers Class-Based Views - [ ] Ajouter des tests unitaires