Symfony
TrustCaptcha – Protection anti-bots

Intégration CAPTCHA Symfony

Intégrez TrustCaptcha dans un contrôleur Symfony — ou, encore plus propre, dans une contrainte Validator personnalisée — avec quelques lignes de PHP. Stoppez le spam automatisé sur les connexions, inscriptions et formulaires de contact tout en conservant CSRF, Twig et le composant Form intacts. Hébergé dans l’UE, conforme RGPD et sans énigmes visuelles.

Démarrage rapide

Comment fonctionne l'intégration

1. Créer un CAPTCHA

Créez un compte utilisateur ou connectez-vous avec un compte existant. Ensuite, créez un nouveau CAPTCHA ou sélectionnez-en un existant. Si vous ne savez pas encore si TrustCaptcha vous convient, essayez notre service CAPTCHA sans risque pendant 14 jours gratuitement.

Sur la page d’aperçu du CAPTCHA, vous trouverez toutes les informations importantes, comme la clé de site et la clé de licence, et vous pouvez aussi y créer votre API key. Autorisez simplement vos sites web à utiliser votre CAPTCHA en les ajoutant à la liste des domaines autorisés dans les règles de sécurité du CAPTCHA.

Début du formulaire de création du CAPTCHA.
Règles de sécurité CAPTCHA d’un CAPTCHA de démonstration.

2. Ajouter le widget CAPTCHA dans votre template Twig

Placez le widget TrustCaptcha dans le template Twig qui rend votre formulaire. Le widget s’exécute en arrière-plan et ajoute un champ caché tc-verification-token lors de l’envoi, qui arrive sur $request->request comme tout autre input.

templates/contact/index.html.twig
HTML
<script type="module" src="https://cdn.trustcomponent.com/trustcaptcha/3.0.x/trustcaptcha.esm.min.js"></script>

<form method="post" action="{{ path('contact_submit') }}">
    <input type="hidden" name="_token" value="{{ csrf_token('contact') }}">
    <input type="email" name="email" required>
    <trustcaptcha-component sitekey="<your_site_key>"></trustcaptcha-component>
    <button type="submit">Send</button>
</form>

Le widget CAPTCHA s’affichera ensuite dans votre formulaire :

CAPTCHA terminé

Besoin d’informations détaillées sur l’intégration du widget CAPTCHA ?
Pour la référence complète du widget — y compris thèmes, langues, design personnalisé et plus encore — veuillez consulter notre documentation.

Lire la documentation

3. Valider le jeton dans votre contrôleur Symfony

Dans votre contrôleur Symfony, récupérez le jeton de vérification depuis la requête, consultez le résultat via notre bibliothèque PHP et décidez si la requête doit être acceptée.

Commencez par installer notre bibliothèque PHP TrustCaptcha :

Install
bash
composer require trustcomponent/trustcaptcha-php:^3.0

Validez ensuite le jeton dans votre contrôleur et agissez en fonction du résultat :

ContactController.php
PHP
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Attribute\Route;
use TrustComponent\TrustCaptcha\TrustCaptcha;

class ContactController extends AbstractController
{
    #[Route('/contact', name: 'contact_submit', methods: ['POST'])]
    public function submit(Request $request): Response
    {
        $token = $request->request->get('tc-verification-token', '');

        try {
            $trustCaptcha = new TrustCaptcha('<your_api_key>');
            $result = $trustCaptcha->getVerificationResult($token);
        } catch (\Throwable $e) {
            return $this->render('contact/index.html.twig', ['error' => 'CAPTCHA verification failed.']);
        }

        if (!$result->verificationPassed || $result->score > 0.5) {
            return $this->render('contact/index.html.twig', ['error' => 'CAPTCHA verification failed.']);
        }

        // CAPTCHA validé — traiter la requête
        return $this->redirectToRoute('contact_success');
    }
}

Besoin d’informations détaillées sur l’intégration CAPTCHA Symfony ?
Pour des instructions détaillées étape par étape — y compris une contrainte Validator personnalisée réutilisable pour les projets avec plusieurs endpoints protégés — veuillez consulter notre documentation.

Lire la documentation

Un autre framework backend que Symfony ?
Si vous utilisez un autre framework, choisissez la recette correspondante ici. Si votre framework n’est pas listé, vos développeurs peuvent intégrer la vérification eux-mêmes à l’aide de notre documentation ou contacter notre équipe support pour demander une intégration préconstruite.

Actix Web
ASP.NET Core
Axum
Django
Echo
Express
FastAPI
Fastify
Fiber
Flask
Gin
Hapi
Laravel
Micronaut
NestJS
Next.js
Quarkus
Ruby on Rails
Sinatra
Spring Boot
Symfony

4. Félicitations 🎉

Vous êtes maintenant protégé par TrustCaptcha — félicitations !

CAPTCHA terminé

FAQs

Où dans une application Symfony a lieu la vérification CAPTCHA ?
Dans la méthode du contrôleur qui reçoit la soumission du formulaire, avant de persister une entité ou d’envoyer un mail. Le jeton CAPTCHA arrive en tant que paramètre de requête classique — lisez-le avec $request->request->get('tc-verification-token').
Puis-je brancher la vérification CAPTCHA dans le Validator de Symfony ?
Oui — c’est le pattern le plus propre. Créez une contrainte personnalisée (App\Validator\TrustCaptchaToken) et un ConstraintValidator taggé qui appelle notre bibliothèque PHP. Injectez ValidatorInterface dans le contrôleur et appelez $validator->validate($token, new TrustCaptchaToken()).
Le composant Form de Symfony lie-t-il automatiquement le jeton caché du widget ?
Pas directement. Le widget poste tc-verification-token comme champ de premier niveau, mais les FormTypes imbriquent les champs sous le block prefix du formulaire (par exemple contact_form[tc-verification-token]). Le moyen le plus simple : valider le jeton via ValidatorInterface comme indiqué ci-dessus, en parallèle de $form->handleRequest($request).
TrustCaptcha remplace-t-il la protection CSRF de Symfony ?
Non. Protection CSRF et TrustCaptcha sont des couches indépendantes — les deux doivent rester activées. Conservez csrf_token() dans votre template Twig et CSRF dans vos FormTypes. Le CAPTCHA confirme uniquement qu’un humain a soumis le formulaire.
Où dois-je stocker la clé d’API CAPTCHA ?
Ajoutez TRUSTCAPTCHA_API_KEY dans votre fichier .env et liez-la à un paramètre dans services.yaml : trustcaptcha.api_key: '%env(TRUSTCAPTCHA_API_KEY)%'. Injectez ensuite le paramètre dans votre validateur personnalisé via la définition de service.
Vous perdez des prospects à cause des CAPTCHAs ?

TrustCaptcha bloque le spam et les bots, pas vos clients. Sans puzzle, conforme au RGPD, hébergé en UE.

Début du CAPTCHA
CAPTCHA terminé
UX sans énigmes
Fonctionne en arrière-plan pendant que les visiteurs saisissent leurs informations — ainsi davantage de personnes terminent vos formulaires et moins abandonnent.
Compatible RGPD
Hébergé dans l’UE et conçu dans une logique privacy-first : pas de cookies, transmission chiffrée, nettoyage automatique — avec des ressources juridiques prêtes à l’emploi.
Sécurité multicouche
Une protection adaptative et un scoring de risque intelligent stoppent les abus très tôt — même en cas de pic d’attaques.
Contrôle total
Ajustez la sensibilité, définissez des listes d’autorisation/refus et utilisez le géoblocage — c’est vous qui décidez du niveau de strictesse de la vérification.

Protégez votre application Symfony avec TrustCaptcha en quelques étapes !

  • Hébergé en UE & conforme RGPD
  • Aucun puzzle
  • Essai gratuit de 14 jours