Skip to content

Security: Florian418/tekwork

Security

SECURITY.md

Politique de Sécurité

Versions supportées

Nous fournissons des mises à jour de sécurité pour les versions suivantes de Tekwork :

Version Supportée
0.3.x
0.2.x
0.1.x

Reporter une vulnérabilité

Nous prenons la sécurité de Tekwork au sérieux. Si vous découvrez une vulnérabilité de sécurité, merci de nous la signaler de manière responsable.

Comment signaler

  1. NE PAS créer une issue publique sur GitHub
  2. Envoyer un message privé via les GitHub Issues en utilisant la fonctionnalité "Security Advisory"
  3. Ou contacter directement @Florian418

Informations à inclure

Pour nous aider à comprendre et résoudre le problème rapidement, veuillez inclure :

  • Type de vulnérabilité (XSS, injection SQL, CSRF, etc.)
  • Localisation (fichier et ligne de code concernés)
  • Impact potentiel (quels dommages pourraient être causés)
  • Preuve de concept (PoC) ou étapes pour reproduire
  • Version affectée (quelle version de Tekwork est concernée)
  • Environnement (PHP version, OS, etc.)

Ce que nous nous engageons à faire

  • Confirmer la réception de votre rapport sous 48 heures
  • Vous tenir informé de l'avancement de la résolution
  • Vous créditer dans le changelog de la version corrigée (si vous le souhaitez)

Ce que vous ne devez PAS faire

  • Ne divulguez pas publiquement la vulnérabilité avant qu'elle ne soit corrigée
  • N'exploitez pas la vulnérabilité au-delà de ce qui est nécessaire pour la démonstration
  • Ne testez pas sur des systèmes en production sans autorisation

Bonnes pratiques de sécurité

Si vous utilisez Tekwork pour votre projet, voici les recommandations essentielles :

Configuration

// config.php - PRODUCTION
return [
    'debug' => false,  // ⚠️ TOUJOURS false en production
    'error_views_path' => path_it(ROOT, 'app', 'views', 'errors'),
    'log_path' => path_it(ROOT, 'log', 'app_errors.log'),
];

Protection XSS

Toujours échapper les sorties HTML :

// ✅ BON
echo htmlspecialchars($user_input, ENT_QUOTES, 'UTF-8');

// ❌ MAUVAIS
echo $user_input;

Validation des routes

Utilisez les SecurityPatterns pour valider les paramètres :

use Tekwork\SecurityPatterns;

$router->add(
    (new Road('article/{:slug}', 'App\Controllers@ArticleController:show', 'article.show'))
        ->rule('slug', SecurityPatterns::SLUG)  // Valide le format
);

Fichiers de configuration

  • Utilisez config.php pour les secrets (il est dans .gitignore)
  • Ne hardcodez JAMAIS de mots de passe ou clés API dans le code
  • Ne versionnez JAMAIS config.php sur Git

Permissions fichiers

Assurez-vous que les permissions sont correctes :

# Dossiers
chmod 755 app/ src/ public/
chmod 750 log/

# Fichiers
chmod 644 public/*.php app/*.php
chmod 640 config.php

Protection CSRF

Tekwork n'implémente pas encore la protection CSRF nativement. Pour des formulaires sensibles, implémentez-la manuellement :

// Générer un token
session_start();
$_SESSION['csrf_token'] = bin2hex(random_bytes(32));

// Dans le formulaire
echo '<input type="hidden" name="csrf_token" value="' . $_SESSION['csrf_token'] . '">';

// Vérification
if (!hash_equals($_SESSION['csrf_token'], $_POST['csrf_token'] ?? '')) {
    die('CSRF token invalide');
}

Vulnérabilités connues

Aucune vulnérabilité critique connue à ce jour.

Limitations connues

  • CSRF Protection : Non implémentée nativement (à faire manuellement)
  • Rate Limiting : Non implémenté (utilisez un middleware externe)
  • Validation des inputs : À implémenter dans vos contrôleurs

Mises à jour de sécurité

Les correctifs de sécurité sont publiés dès que possible via :

  1. Nouvelles versions sur GitHub (releases)
  2. Changelog dans le fichier CHANGELOG.md
  3. Notifications via les GitHub Security Advisories

Comment rester à jour

# Vérifier la version actuelle
composer show tekwork/framework

# Mettre à jour vers la dernière version
composer update tekwork/framework

# Ou spécifier une version
composer require tekwork/framework:^0.3.0

Audit de sécurité

Tekwork est un projet d'apprentissage et n'a pas été audité professionnellement.

Pour des applications critiques (finance, santé, données sensibles), nous recommandons :

  • Un audit de sécurité professionnel
  • L'utilisation de frameworks matures (Laravel, Symfony)
  • Des tests de pénétration

Ressources

Remerciements

Nous remercions les chercheurs en sécurité qui signalent de manière responsable les vulnérabilités :

  • (Aucun pour le moment)

Merci de contribuer à la sécurité de Tekwork ! 🛡️

There aren’t any published security advisories