v1.0.2 - Corrections de bugs critiques
🐛 Bugs critiques corrigés
Sécurité
- SQL Injection : Utilisation de
$wpdb->prepare()avecesc_like()pour toutes les requêtes de nettoyage - Rate limiting : Throttle JavaScript côté client (1 requête/seconde minimum)
Stabilité
- Race conditions : Remplacement des transients par des locks atomiques avec
flock() - Fuite de ressources : Fermeture garantie de tous les sockets dans des blocks
finally - Memory leak : Nettoyage des logs optimisé avec
SplFileObjectau lieu de charger tout en RAM
Performance
- Timeout imprécis : Utilisation de
microtime(true)au lieu detime()pour des timeouts au milliseconde près - Logs volumineux : Rotation automatique sans saturer la mémoire
Compatibilité
- PHP 7.4 : Remplacement de
str_starts_with()parstrpos() === 0 - JSON : Validation stricte avec
json_last_error()après chaquedecode
📋 Détails techniques
Avant (v1.0.1)
// Race condition possible
if (get_transient($lock_key)) return;
set_transient($lock_key, time(), 120);Après (v1.0.2)
// Lock atomique
$lock_handle = fopen($lock_file, 'c');
if (!flock($lock_handle, LOCK_EX | LOCK_NB)) return;
try {
// Code protégé
} finally {
flock($lock_handle, LOCK_UN);
fclose($lock_handle);
}🔄 Migration
Aucune action requise. La mise à jour est rétrocompatible.
⚠️ Important
Cette version corrige des bugs qui pouvaient causer :
- Envoi de commandes en double lors de pics de trafic
- Blocages serveur sur timeouts réseau
- Saturation mémoire avec logs volumineux
- Injection SQL potentielle lors de la désactivation
👉 Mise à jour fortement recommandée pour tous les utilisateurs.
📝 Changelog complet
- fix: Lock atomique avec flock() pour éliminer race conditions
- fix: Timeout précis avec microtime(true) au lieu de time()
- fix: Fermeture garantie des sockets dans finally blocks
- fix: Nettoyage logs optimisé avec SplFileObject (évite OOM)
- fix: Validation JSON avec json_last_error() après decode
- fix: SQL injection dans cleanup avec $wpdb->prepare()
- fix: Compatibilité PHP 7.4 (remplacement str_starts_with)
- fix: Rate limiting côté client (throttle 1 req/sec)
- fix: Nettoyage complet des ressources à la désactivation
🧪 Tests
Testé sur :
- PHP 7.4, 8.0, 8.1, 8.2
- WordPress 6.0+
- WooCommerce 7.0+ (HPOS activé et désactivé)
- Valheim Dedicated Server
📚 Documentation
La documentation complète est disponible sur le README.
🤝 Contribution
Merci à la communauté pour les rapports de bugs et les tests.