Couverture de l'article 5 sources d'amélioration pour la sécurité de votre application Symfony
Retour aux articles

L'agence

WanadevStudio

5 sources d'amélioration pour la sécurité de votre application Symfony

Dans un monde où les données personnelles deviennent un business pour des hackers, la sécurité devient un élément très important. Il faut savoir protéger ses utilisateurs ainsi que se protéger soi-même.

Voici quelques pistes, conseils ou suggestions qui pourraient vous sauver de quelques coquilles lors de vos développements Symfony.

Se protéger des failles XSS avec HTMLPurifyBundle

Le HTMLPurifyBundle est un bundle qui vous aide à filtrer correctement toutes les entrées utilisateur sur votre site web et éviter toutes injections XSS.

Ce bundle implémente un nouveau filtre Twig qui remplace le filtre raw, en charge de faire le rendu total d'une variable. Le filtre purify limite l'injection de balises <script> qui peuvent être malicieuses. Assez simple d'utilisation, je vous le recommande fortement !

Vérifier et limiter le nombre d'essais de mot de passe

Vérifier et limiter le nombre d'essais de mot de passe ainsi que l'envoi d'emails de réinitialisation pour éviter des attaques de type Brute force. Ces attaques peuvent aussi être assimilées à du DDoS.

Les robots qui crawlent les pages peuvent effectuer un grand nombre de requêtes sur un laps de temps très court. La mise en place d'un ReCaptcha de type Google peut être aussi une très bonne alternative.

Mettre en place un proxy devant l’accès aux ressources sensibles

Pour protéger les données exemples : RIB, factures, lettres (c'est à dire tous les documents ne devant pas être exposés publiquement), il est utile de mettre en place un proxy contrôlant l'accès. Cela évite un accès direct aux dossiers d'upload.

Nous conseillons bien évidement d'effectuer des tests en amont sur les types MIME pour limiter l'injection de code « malin » (XSS).

Se prémunir du Click jacking

Sur une boutique en ligne, vous pouvez être victime d'une attaque de type clickjacking. Pour pallier à ce type d'attaque, vous pouvez placer une en-tête (header) HTTP à rajouter côté serveur. Cela vous met à l'abri de ces problèmes.

Voici la méthode l'en-tête à ajouter : X-Frame-Options: DENY. Cela désactive l'affichage de votre site dans une iframe.

@ Avec ce dispositif, un hacker ne pourra plus détourner un clic d'utilisateur connecté et provoquer un achat inopiné (par exemple).

Double protection de vos formulaires

Enfin, sécurisez vos formulaires en vérifiant chaque information reçue, du côté client mais SURTOUT du côté serveur. Cela vous permet de sécuriser les informations reçues mais également limiter les erreurs de base de données ou erreurs de rendus (templating).

Toutes ces précautions, relativement peu gourmandes, sont simples à mettre en place pour bien sécuriser vos sites Symfony. Ces dispositifs sont par ailleurs des points intéressants à relever lors d'audit de sécurité, de véritables kits de survie ! Ces petites attentions vous le rendront bien.

Et vous, vous avez des petites astuces pratiques pour éviter les pièges lors de vos développements ? Nous sommes attentifs à vos retours et suggestions !

Par ailleurs, je tiens à remercier Alain Tiemblo pour son intervention sur la sécurité à la conférence de l'AFUP 2016 à Clermont Ferrand.

Commentaires

Photo de Philippe auteur du commentaire

Philippe

Il y a 9 ans

Bonjour
Je développe actuellement un "intanet" pour notre lycée avec Symfony3 et mon problème actuel est de réussir à sécuriser un espace pour les documents privés.
Auriez vous des liens pointant vers des tutos ou des exemples ?
D'avance merci
Philippe

  • Couverture de l'article Retour sur le Meet-up Python du 30 juin 2025
    Retour sur le Meet-up Python du 30 juin 2025

    Il y a 5 jours

    Ce lundi 30 juin 2025 nous accueillions la branche lyonnaise de l'AFPy dans nos locaux pour un meetup autour du langage Python. Malgré les fortes températures, une trentaine de personnes ont répondu présentes pour ce moment de convivialité et d'échange.

  • Couverture de l'article Figma Make : enfin une passerelle prometteuse entre design et code grâce à l'IA
    Figma Make : enfin une passerelle prometteuse entre design et code grâce à l'IA

    Il y a 3 semaines

    Depuis quelques années, les outils d'IA pour générer des intégrations d'interfaces à partir de maquettes fleurissent. On en a testé plusieurs chez WanadevDigital : de Locofy à Uizard, en passant par Framer AI. Tous ont leurs qualités, mais jusqu’ici, il manquait un vrai pont stable entre les intentions du designer et la réalité du code front.

    L’arrivée de Figma Make change la donne. Et si je devais résumer son impact en une phrase : ça fonctionne, et ça fonctionne pour tout le monde, designers, développeurs et intégrateurs !

  • Couverture de l'article Maîtriser la traduction (i18n) dans un projet web - Partie 2 : Conseils pour une localisation gérable et évolutive
    Maîtriser la traduction (i18n) dans un projet web - Partie 2 : Conseils pour une localisation gérable et évolutive

    Il y a 4 mois

    Dans la partie 1, nous nous sommes concentrés sur la mise en place d'une base solide pour la gestion des traductions dans un projet Vue. Maintenant que votre système de traduction est opérationnel, il est temps d'examiner de plus près comment structurer, gérer et faire évoluer vos fichiers de traduction de manière efficace.

    Cette partie couvrira les bonnes pratiques que nous utilisons chez Wanadev pour créer des clés de traduction maintenables, éviter les pièges courants et garantir que vos fichiers de traduction restent propres et évolutifs au fur et à mesure que votre projet grandit.

  • Couverture de l'article Maîtriser la traduction (i18n) dans un projet web - Partie 1 : Configurer proprement
    Maîtriser la traduction (i18n) dans un projet web - Partie 1 : Configurer proprement

    Il y a 4 mois

    Mettre en place l'internationalisation (i18n) dans un projet web peut sembler simple. Cependant, de nombreux projets se retrouvent avec des configurations de traduction mal gérées, difficiles à maintenir ou à faire évoluer à mesure que l'application grandit. Une stratégie i18n robuste est essentielle pour offrir une expérience utilisateur fluide dans plusieurs langues.

    Je vous décris ici, les pratiques que nous avons établies chez Wanadev au fil des années d'expérience pour mettre en œuvre et gérer les traductions dans les projets Vue. Bien que les exemples soient spécifiques à Vue, la plupart de ces pratiques peuvent être appliquées à n'importe quel framework.

  • Couverture de l'article Bien choisir sa typographie : quelques bases pour un message clair
    Bien choisir sa typographie : quelques bases pour un message clair
    Méthodologie

    Il y a 9 mois

    On n'écrit pas "Je t'aime" comme "Je te hais" ! Cette petite phrase résume bien ma problématique : quand on doit délivrer un message, la compréhension de ce dernier ne se fait pas uniquement par la lecture simple du texte, mais aussi par sa mise en forme. Et de cette mise en forme dépend la bonne compréhension du message. Dans cet article, nous allons nous pencher sur l’histoire et les familles de typographies dans le but de sensibiliser sur l’importance des choix de typographies dans la communication. Nous verrons ensuite quelques astuces pour bien sélectionner sa typographie et mettre en forme son message.

  • Couverture de l'article Les solutions CPQ sont-elles accessibles à toutes les entreprises ?
    Les solutions CPQ sont-elles accessibles à toutes les entreprises ?
    Méthodologie

    Il y a 9 mois

    Le CPQ (Configure, Price, Quote) est un outil essentiel pour les entreprises cherchant à optimiser leurs processus de vente. Il permet aux équipes commerciales de configurer rapidement et facilement des produits ou services complexes en fonction des besoins spécifiques des clients, tout en garantissant la cohérence des prix. Grâce au CPQ, les vendeurs peuvent établir des devis précis et personnalisés en temps réel, tout en tenant compte des remises, des promotions ou des ajustements spécifiques. Aujourd'hui les CPQ tirent majoritairement parti de la 3D pour proposer une visualisation de produit plus réaliste et complète.