🛡️ Transparence & Sécurité

Protection de nos plateformes

Tous les systèmes Skys sont protégés par des mécanismes de détection et de blocage automatiques des tentatives d'intrusion, d'injection et de scan malveillant.

⚙️ Flux de traitement de chaque requête
1
Vérification IP bannie
L'adresse IP de chaque visiteur est comparée à la liste des IPs bannies. Si elle y figure et que le ban est toujours actif → blocage immédiat (HTTP 403), sans aucune analyse supplémentaire.
2
Analyse des paramètres GET & POST
Chaque valeur reçue est décodée (URL + double encodage) puis analysée par des expressions régulières couvrant SQLi, XSS, traversal de chemin et injection de commandes. En cas de correspondance → journalisation + ban IP 1h + HTTP 403.
3
Vérification du User-Agent
Les User-Agents des outils d'attaque connus (sqlmap, nikto, dirbuster…) sont détectés. En cas de correspondance → journalisation + ban IP 1h + HTTP 403.
4
Détection de sondes CMS & fichiers sensibles
Les URI ciblant des fichiers sensibles (wp-admin, .env, phpinfo, shells…) sont bloquées. En cas de correspondance → journalisation + ban IP 1h + HTTP 403.
5
Requête autorisée
Si aucune menace n'est détectée, la requête est transmise normalement à l'application.
🎯 Signatures d'attaques détectées & bloquées
Injection SQL (SQLi) BLOQUÉ
Tentatives d'extraction ou manipulation de la base de données.
  • UNION SELECT, OR 1=1, OR '1'='1
  • Commentaires SQL (--) en fin de valeur
  • DROP / DELETE / INSERT / UPDATE injectés
  • SLEEP(), BENCHMARK(), LOAD_FILE()
  • Accès à information_schema
  • EXEC(), xp_cmdshell (MSSQL)
Cross-Site Scripting (XSS) BLOQUÉ
Injection de scripts malveillants dans les paramètres.
  • <script>, vbscript:, javascript:
  • Handlers d'événements (onerror, onload…)
  • eval(), document.cookie
  • Entités HTML encodées (&#x…)
  • %3cscript (URL-encodé)
Traversal de chemin BLOQUÉ
Tentatives d'accès à des fichiers système hors racine web.
  • ../../ (et variantes encodées %2f, %2e)
  • etc/passwd, windows/system32
  • Double encodage URL (%252e)
Injection de commande BLOQUÉ
Tentatives d'exécution de commandes système via les paramètres.
  • | cat, | ls, | whoami, | wget…
  • Backticks (`commande`)
  • ${IFS} (bypass d'espace)
  • && id, && cat
Outils de scan / audit offensif BLOQUÉ
User-Agents identifiant des outils d'attaque automatisés.
  • sqlmap, nikto, nmap, masscan
  • dirbuster, gobuster, wfuzz
  • acunetix, burpsuite, w3af
  • nessus, openvas, metasploit
  • havij, appscan, zgrab
Sondes CMS & fichiers sensibles BLOQUÉ
Tentatives d'accès à des ressources non publiées ou dangereuses.
  • wp-login.php, wp-admin, xmlrpc.php
  • /.env, /.git/, /.htpasswd
  • /phpinfo, adminer.php, phpmyadmin
  • shell.php, cmd.php, c99.php, r57.php
  • /backup.zip, /db.sql, eval-stdin
Brute force login BLOQUÉ
Tentatives répétées de connexion à l'espace d'administration.
  • Comptage par IP dans une fenêtre de 15 min
  • Blocage automatique après 10 tentatives
  • Durée du ban : 30 minutes
  • Réinitialisation automatique après succès
📌 Double-encodage géré Toutes les valeurs sont décodées en profondeur (URL decode) avant l'analyse, ce qui neutralise les tentatives de contournement par encodage (%27, %3c, %2e%2e, etc.).
Mécanismes de réponse
Déclencheur Réponse immédiate Durée du ban Journalisé
IP déjà bannie (attaque) HTTP 403 + exit Jusqu'à expiration Non (évite le flood)
SQLi détectée HTTP 403 + exit 1 heure Oui
XSS détectée HTTP 403 + exit 1 heure Oui
Path traversal détecté HTTP 403 + exit 1 heure Oui
Injection commande détectée HTTP 403 + exit 1 heure Oui
Outil de scan (User-Agent) HTTP 403 + exit 1 heure Oui
Sonde CMS / fichier sensible HTTP 403 + exit 1 heure Oui
Brute force login (≥10 / 15 min) Formulaire bloqué 30 minutes Oui
⚠️ Ce que voit l'attaquant Aucun message d'erreur technique n'est exposé. La page 403 affiche uniquement : « Accès refusé. Cette tentative a été enregistrée. » Aucun détail sur les règles déclenchées n'est visible de l'extérieur.
📋 Journalisation des événements
Données enregistrées LOG
  • Horodatage (timestamp Unix)
  • Adresse IP source
  • Type d'attaque (sqli / xss / traversal…)
  • Méthode HTTP (GET / POST)
  • URI complète (tronquée à 200 car.)
  • Paramètre et valeur déclencheurs
  • User-Agent (tronqué à 200 car.)
  • Statut bloqué (oui / non)
Stockage & limites LOG
  • Fichier JSON côté serveur (hors webroot)
  • Non accessible via navigateur
  • Maximum 500 entrées (rotation FIFO)
  • Écriture avec verrou exclusif (LOCK_EX)
  • Consultation via l'interface d'admin uniquement
  • Purge manuelle possible depuis l'admin
IPs bannies (attaques) BAN
  • Fichier JSON séparé du journal
  • Expiration automatique après 1 heure
  • Purge des entrées expirées à chaque accès
  • Non vidé lors de la purge du journal
  • Visible dans l'onglet Sécurité de l'admin
IPs bannies (brute force) BAN
  • Fichier JSON dédié au brute force login
  • Fenêtre de comptage : 15 minutes
  • Seuil de déclenchement : 10 tentatives
  • Durée du ban : 30 minutes
  • Réinitialisation auto après connexion réussie
🌐 Pages couvertes par la protection
Page / Endpoint Protection active Remarque
index.php ✓ Complète Page d'accueil publique
sitemap.php ✓ Complète Sitemap index XML
sitemap_pages.php ✓ Complète Sitemap pages XML
admin/login.php ✓ Complète + brute force login
admin/index.php ✓ Complète Via require_login()
admin/save.php ✓ Complète + CSRF token
admin/logout.php ✓ Complète
promotion.php HTML pur Aucun paramètre PHP traité
🔒 Protection CSRF sur les formulaires admin Tous les formulaires POST de l'espace d'administration utilisent un token CSRF signé par session, validé côté serveur avant tout traitement. Un token invalide retourne immédiatement HTTP 403.
🏗️ Architecture de sécurité
Session admin sécurisée
  • Cookie HTTPOnly + SameSite=Strict
  • Flag Secure si HTTPS actif
  • Expiration après 1 heure d'inactivité
  • Vérification IP + User-Agent à chaque requête
  • Destruction immédiate si changement d'IP/UA
Données sensibles hors webroot
  • Fichiers de logs JSON dans /data/
  • Non servis directement par le serveur web
  • Accès uniquement via code PHP authentifié
  • Noms de fichiers préfixés par un point (hidden)
Sorties HTML sécurisées
  • Toutes les valeurs affichées passent par htmlspecialchars()
  • ENT_QUOTES | ENT_SUBSTITUTE, UTF-8
  • Fonction h() centralisée dans functions.php
Uploads sécurisés
  • Vérification MIME type réel (finfo)
  • Extension blanche (png/jpg/webp/svg)
  • Nom de fichier régénéré aléatoirement
  • Dossier uploads/ sans exécution PHP

Dernière mise à jour : 08/05/2026 — Skys.be, région liégeoise, Belgique