Bundle CAPTCHA pour Symfony

captchacore/captchacore-bundle pour Symfony 6.4 LTS, 7.x et 8.x — FormType, contrainte de validation, attribut de contrôleur et fonction Twig. Vous choisissez ce qui convient à votre projet.

Symfony 6.4 LTS – 8.x PHP 8.2+ Composer
Vers le guide → Commencer gratuitement

En trois étapes

Protéger Symfony en quelques minutes

1

Installer le bundle

Ajouter le dépôt, lancer composer require, inscrire le bundle dans config/bundles.php et créer config/packages/captchacore.yaml.

2

Clés dans le .env

CAPTCHACORE_URL, clé du site et secret en variables d’environnement.

3

Choisir la voie d’intégration

FormType pour les formulaires Symfony, contrainte pour les DTO, attribut pour les contrôleurs, fonction Twig pour le reste.

Exemple
# composer.json: "repositories": [{"type": "composer", "url": "https://captchacore.eu/packages"}]
composer require captchacore/captchacore-bundle

// config/bundles.php
CaptchaCore\SymfonyBundle\CaptchaCoreBundle::class => ['all' => true],

# .env
CAPTCHACORE_URL=https://captchacore.eu
CAPTCHACORE_SITE_KEY=cc_pub_…
CAPTCHACORE_SECRET_KEY=cc_sec_…

// FormType
$builder->add('captcha', CaptchaCoreType::class, [
    'form_type' => 'contact',
]);

// oder als Attribut am Controller
#[RequiresCaptcha(formType: 'register')]
public function register(Request $request): Response

Ce que vous obtenez

Conçu pour Symfony, pas seulement compatible

FormType

Un champ dans le form builder affiche widget et jeton ; la vérification se fait dans handleRequest().

Contrainte de validation

Pour les DTO et charges utiles d’API : #[CaptchaCoreToken] sur la propriété, vérifié comme toute autre contrainte.

Attribut de contrôleur

#[RequiresCaptcha] vérifie le jeton avant l’exécution de l’action — sans code dans la méthode.

Fonction Twig

captchacore_widget() pour les formulaires faits main hors du composant Form.

Badge de sécurité

Pour la connexion Symfony : le badge sur le Passport fait vérifier le jeton avant le mot de passe.

Tests sans réseau

Le client est un service — remplacez-le par un faux dans les tests, c’est tout.

Pas de puzzles d’images

Preuve de travail et analyse comportementale au lieu de feux rouges et de passages piétons — les humains cliquent une fois, les bots s’épuisent à calculer.

Serveurs en Allemagne

Traitement sur nos propres serveurs, aucun transfert vers des pays tiers, aucun suivi entre les sites.

16 Ko, sans framework

Le widget se charge vite, ne bloque jamais l’interface et se pilote au clavier et au lecteur d’écran.

Questions fréquentes sur Symfony

Faut-il Symfony Flex ?

Non. Le bundle s'inscrit une fois dans config/bundles.php et la configuration se trouve dans config/packages/captchacore.yaml — avec ou sans Flex.

Fonctionne-t-il avec API Platform ?

Oui, via la contrainte de validation sur vos DTO d’entrée.

Quelle version de PHP ?

PHP 8.2 ou plus récent ; Symfony 8 requiert lui-même PHP 8.4.

Tous les détails, options et exemples de code : Documentation →

Autres intégrations

WordPress WooCommerce WoltLab Suite Laravel Créer votre propre intégration