nwb/cyber-sec-module (0.2.1)

Published 2025-06-23 13:46:44 +00:00 by drone_publisher

Installation

{
	"repositories": [{
			"type": "composer",
			"url": ""
		}
	]
}
composer require nwb/cyber-sec-module:0.2.1

About this package

Module de remontée de piratage pour les applications web

📘 Module Commun de Remontée de Piratage

Module PHP réutilisable pour la détection et remontée automatique d'incidents de sécurité vers un endpoint centralisé.

🚀 Installation

composer require nwb/cyber-sec-module

🔧 Configuration

Variables d'environnement

Définissez les variables d'environnement suivantes :

export CYBERSECMODULE_TOKEN="votre-token-authentification"
export CYBERSECMODULE_URL="https://n8n.kub.nwb.fr/webhook/signalHackingAttempt"

💡 Utilisation

Utilisation basique avec variables d'environnement

<?php
require_once 'vendor/autoload.php';

// Le module utilise automatiquement les variables d'environnement
$cyberSec = new CyberSecModule('https://monsite.example.com');

// Signaler une tentative de piratage
$cyberSec->signalHackingAttempt('192.168.1.100', 'Tentative d\'accès à /wp-admin');

Utilisation avec configuration personnalisée

<?php
require_once 'vendor/autoload.php';

// Configuration personnalisée (surcharge les variables d'environnement)
$cyberSec = new CyberSecModule(
    'https://monsite.example.com',                    // Site obligatoire
    'https://custom.endpoint.com/webhook',            // Endpoint personnalisé (optionnel)
    'token-personnalisé'                              // Token personnalisé (optionnel)
);

// Signaler une tentative de piratage
$cyberSec->signalHackingAttempt('203.0.113.1', 'Scan de répertoires sensibles');

Utilisation optimisée (recommandée)

<?php
require_once 'vendor/autoload.php';

// Configuration chargée UNE SEULE FOIS (optimisation performance)
$cyberSec = new CyberSecModule('https://monsite.example.com');

// Réutilisation de l'instance pour plusieurs signalements
$cyberSec->signalHackingAttempt('192.168.1.100', 'Tentative SQL injection');
$cyberSec->signalHackingAttempt('192.168.1.101', 'Scan de ports');
$cyberSec->signalHackingAttempt('192.168.1.102', 'Bot malveillant détecté');

🔒 Sécurité

  • Authentification Bearer token obligatoire
  • Validation stricte des adresses IP avec filter_var()
  • Système de retry avec 3 tentatives et délais exponentiels
  • Transmission sécurisée via HTTPS avec vérification SSL
  • Timeout configuré pour éviter les blocages

🧪 Tests

# Exécuter les tests
composer test

# Configuration requise : phpunit.xml avec vos vraies variables d'environnement

📊 Structure des données envoyées

Format simplifié et optimisé :

{
  "ip": "203.0.113.1",
  "timestamp": "2024-01-15T14:30:00+00:00",
  "pattern": "Tentative de piratage détectée pour la raison : Scan de répertoires sensibles",
  "site": "https://monsite.example.com"
}

⚙️ Configuration avancée

Priorités de configuration hiérarchique

  1. Paramètres du constructeur (priorité maximale)
  2. Variables d'environnement (CYBERSECMODULE_*)
  3. Valeurs par défaut du module

Système de retry automatique

  • 3 tentatives maximum par signalement
  • Délais exponentiels : 1s, 2s, 4s entre les tentatives
  • Exception levée si toutes les tentatives échouent
  • Timeout : 2 secondes par tentative

Paramètres du constructeur

public function __construct(
    string $site,                    // Site obligatoire (ex: "https://monsite.com")
    ?string $endpoint = null,        // Endpoint optionnel (défaut: variable env ou URL par défaut)
    ?string $auth_token = null       // Token optionnel (défaut: variable env, obligatoire)
)

🛠️ Développement

Prérequis

  • PHP 7.4+ minimum
  • Composer pour la gestion des dépendances
  • cURL extension activée

Structure du projet

src/
  functions.php          # Classe CyberSecModule principale
tests/
  CyberSecModuleTest.php # Tests unitaires complets
phpunit.xml.dist         # Configuration des tests
composer.json            # Dépendances et configuration

Architecture

  • Classe CyberSecModule : Architecture orientée objet optimisée
  • Configuration unique : Chargée une seule fois dans le constructeur
  • Méthodes privées : Encapsulation complète pour la sécurité
  • Validation stricte : Contrôle de tous les paramètres d'entrée

📋 Gestion d'erreurs

Le module lève des exceptions explicites pour tous les cas d'erreur :

try {
    $cyberSec = new CyberSecModule('https://monsite.com');
    $cyberSec->signalHackingAttempt('192.168.1.100', 'Tentative malveillante');
} catch (Exception $e) {
    error_log("Erreur CyberSecModule : " . $e->getMessage());
}

🆕 Changelog v0.2.0

Nouveautés

  • Architecture classe : Remplacement de la fonction globale
  • Configuration optimisée : Chargement unique dans le constructeur
  • Format de données simplifié : Payload léger {ip, timestamp, pattern, site}
  • Validation stricte : Contrôle de tous les paramètres

Suppressions

  • Compression GZIP : Supprimée pour simplifier
  • Hachage SHA-256 : Supprimé (données non sensibles)
  • Détection automatique de patterns : Fonctionnalité externalisée

🔄 Changements breaking

  • Interface complètement différente : Passage fonction → classe
  • Paramètres modifiés : signalHackingAttempt($ip, $reason) au lieu de ($config, $patterns)
  • Format de données : Structure simplifiée incompatible avec v0.x

📝 Licence

Propriétaire - NwB

👨‍💻 Mainteneur

Maël Donnart - mael.donnart@nwb.fr

Dependencies

Dependencies

ID Version
php >=7.4

Development Dependencies

ID Version
phpunit/phpunit *
squizlabs/php_codesniffer *
Details
Composer
2025-06-23 13:46:44 +00:00
11
Maël Donnart
5.1 KiB
Assets (1)
Versions (8) View all
0.2.1 2025-06-23
0.2.0 2025-06-23
0.1.3 2025-06-20
0.0.6 2025-06-18
0.0.5 2025-06-18