Skip to content

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Repository files navigation

Mini Blog Sécurisé (PHP)

Application de blog développée en PHP dans un objectif pédagogique, mettant l’accent sur la sécurité applicative et une architecture modulaire proche des standards professionnels. Le projet a été initialement conçu avec des vulnérabilités, puis entièrement corrigé afin de démontrer les bonnes pratiques de sécurisation d’une application web.

Objectifs du projet

  • Mettre en œuvre les principes fondamentaux de la sécurité web
  • Corriger des vulnérabilités courantes (OWASP Top 10)
  • Proposer une architecture claire et maintenable
  • Fournir une base saine pour des évolutions futures (MVC, routing, etc.)

Fonctionnalités principales

  • Authentification sécurisée (inscription / connexion)
  • Création et consultation d’articles
  • Commentaires sur les articles
  • Recherche d’articles
  • Espace utilisateur
  • Interface administrateur (gestion des utilisateurs)
  • Upload sécurisé d’avatars

Sécurité mise en œuvre

Les mécanismes suivants ont été implémentés :

  • Injection SQL : requêtes préparées via PDO

  • Mots de passe : hachage bcrypt (cost 12), aucune donnée sensible en clair

  • XSS : échappement systématique des sorties (htmlspecialchars)

  • CSRF : tokens CSRF sur tous les formulaires

  • Sessions :

    • Cookies HttpOnly et SameSite
    • Régénération de l’ID après connexion
    • Durée de session limitée
  • Upload de fichiers :

    • Vérification du type MIME réel
    • Limitation de taille (2 Mo)
    • Stockage hors du document root
  • Rate limiting : protection contre les attaques par force brute

  • Docker :

    • Exécution avec un utilisateur non-root
    • Permissions fichiers restreintes (755)
  • Headers de sécurité :

    • X-Frame-Options
    • X-Content-Type-Options
    • Referrer-Policy

Architecture du projet

Le projet suit une séparation stricte entre les fichiers publics et privés.

/app/
  bootstrap.php        # Point d'entree centralise
  /views/layouts/      # Templates reutilisables
    header.php
    footer.php

/config/
  config.php          # Configuration application
  database.php        # Connexion DB
  .htaccess           # Protection acces direct

/includes/
  security.php        # Fonctions securite
  validation.php      # Fonctions validation
  .htaccess           # Protection acces direct

/public/            # Document root
  *.php             # Pages publiques
  /css/style.css    # Styles centralises

/storage/
  /database/        # Fichier SQLite
  /uploads/avatars/ # Fichiers utilisateurs

Principe clé : seul le dossier public/ est exposé au web. Les fichiers sensibles (configuration, base de données, uploads) sont isolés et protégés via .htaccess.

Installation

Avec Docker (recommandé)

docker build -t mini-blog .
docker run -d -p 8080:80 mini-blog
docker exec -it <container_id> php /var/www/html/init_db.php

Accès à l’application : http://localhost:8080

En local (développement)

php init_db.php
cd public
php -S localhost:8000

Accès : http://localhost:8000

Identifiants par défaut

Après l’initialisation de la base :

À modifier immédiatement après la première connexion.

Tests de sécurité (exemples)

# tentative d'injection SQL (doit échouer)
curl -X POST http://localhost:8080/login.php \
  -d "email=admin' OR '1'='1' --&password=test"

# XSS (doit être échappé)
curl -X POST http://localhost:8080/comment.php \
  -d "content=<script>alert('xss')</script>"

Dépendances

  • PHP 8.2+
  • SQLite3
  • PDO
  • Apache (production) ou serveur PHP intégré (développement)
  • Docker (optionnel mais recommandé)

Contexte pédagogique

Ce projet s’inscrit dans un cadre académique (sécurité des applications web). Il a pour objectif de démontrer :

  • l’identification de vulnérabilités,
  • leur correction,
  • et la mise en place d’une architecture plus professionnelle.

Licence

Projet éducatif. Ne pas utiliser en production sans audit de sécurité complémentaire.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages