Skip to content

v1.0.2

Latest

Choose a tag to compare

@skylidefr skylidefr released this 01 Oct 02:01
· 6 commits to main since this release

v1.0.2 - Corrections de bugs critiques

🐛 Bugs critiques corrigés

Sécurité

  • SQL Injection : Utilisation de $wpdb->prepare() avec esc_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 SplFileObject au lieu de charger tout en RAM

Performance

  • Timeout imprécis : Utilisation de microtime(true) au lieu de time() 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() par strpos() === 0
  • JSON : Validation stricte avec json_last_error() après chaque decode

📋 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.