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
- Paramètres du constructeur (priorité maximale)
- Variables d'environnement (
CYBERSECMODULE_*
) - 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 | * |