- Nonces WordPress : Tous les formulaires et requêtes AJAX utilisent des nonces uniques
- Durée de vie : 12 heures (43200 secondes)
- Vérification stricte : Validation obligatoire avant toute action sensible
- Capability check :
manage_optionsrequis pour toutes les actions admin - Vérification utilisateur : Authentification obligatoire
- Logging : Tentatives d'accès non autorisées enregistrées
Toutes les entrées utilisateur sont nettoyées selon leur type :
sanitize_text_field()pour les textes simplessanitize_textarea_field()pour les zones de textesanitize_email()pour les emailsesc_url_raw()pour les URLssanitize_key()pour les clés/identifiantsintval()/floatval()pour les nombres
Toutes les données affichées sont échappées :
esc_html()pour le HTMLesc_attr()pour les attributsesc_url()pour les URLsesc_js()pour le JavaScriptwp_kses_post()pour le contenu HTML autorisé
- Vérification de
DOING_AJAX - Validation du referer HTTP
- Actions autorisées en liste blanche
- Rate limiting (50 requêtes/heure/utilisateur)
- Limite : 50 requêtes par heure et par utilisateur
- Stockage : Transients WordPress
- Logging : Dépassements enregistrés
X-Content-Type-Options: nosniff
X-Frame-Options: SAMEORIGIN
X-XSS-Protection: 1; mode=block
Referrer-Policy: strict-origin-when-cross-origin
.htaccesspour bloquer l'accès aux fichiers sensibles- Désactivation de l'exécution PHP dans les dossiers uploads/assets
- Blocage de l'indexation des répertoires
- Vérification de l'existence des posts
- Validation du type de post
- Protection contre les injections
Événements enregistrés (en mode WP_DEBUG) :
- Tentatives d'accès non autorisées
- Nonces invalides
- Rate limit dépassé
- Actions suspectes
La classe centralisée SCF_Security gère toutes les vérifications :
$security = SCF_Security::get_instance();
// Vérifier les permissions
$security->check_permissions('manage_options');
// Vérifier un nonce
$security->verify_nonce($nonce, 'action_name');
// Vérifier une requête AJAX complète
$security->verify_ajax_request('action', $nonce);
// Sanitize des données
$clean_data = $security->sanitize_array($data, 'text');
// Échapper pour l'affichage
$safe_output = $security->escape_output($data, 'html');
// Valider un ID de post
$post = $security->validate_post_id($id, 'scf-field-group');- Toujours vérifier les permissions
if (!$this->security->check_permissions('manage_options')) {
wp_die('Accès refusé');
}- Toujours valider les nonces
if (!$this->security->verify_nonce($_POST['nonce'], 'action')) {
wp_die('Nonce invalide');
}- Toujours sanitize les entrées
$value = $this->security->sanitize_value($_POST['field'], 'text');- Toujours échapper les sorties
echo $this->security->escape_output($value, 'html');- Utiliser la validation complète pour AJAX
if (!$this->security->verify_ajax_request('action', $nonce)) {
wp_send_json_error('Sécurité échouée');
}- Gardez WordPress à jour
- Utilisez des mots de passe forts
- Limitez les utilisateurs avec capability
manage_options - Activez HTTPS sur votre site
- Faites des sauvegardes régulières
Si vous découvrez une faille de sécurité :
- NE PAS créer d'issue publique
- Envoyer un email à : akrem.belkahla@infinityweb.tn
- Inclure :
- Description détaillée
- Steps to reproduce
- Impact potentiel
- Version affectée
Nous nous engageons à :
- Répondre sous 48h
- Corriger sous 7 jours (vulnérabilités critiques)
- Créditer le découvreur (si souhaité)
- Protection CSRF avec nonces
- Validation des permissions utilisateur
- Sanitization de toutes les entrées
- Échappement de toutes les sorties
- Protection contre les injections SQL (prepared statements)
- Rate limiting sur les requêtes AJAX
- Headers de sécurité HTTP
- Protection des fichiers sensibles
- Validation des IDs et types de posts
- Logging des événements de sécurité
- Vérification du referer HTTP
- Protection contre XSS
- Protection contre CSRF
- Protection contre les injections
- Classe de sécurité centralisée
- ✅ Ajout de la classe
SCF_Securitycentralisée - ✅ Implémentation du rate limiting
- ✅ Headers de sécurité HTTP
- ✅ Protection .htaccess
- ✅ Logging des événements de sécurité
- ✅ Validation stricte des requêtes AJAX
Auteur : Akrem Belkahla
Agence : Infinity Web
Email : akrem.belkahla@infinityweb.tn
Version : 1.4.1