Skip to main content

5 conseils pour sécuriser PHP Laravel

Écrit par
Headshot of DeveloperSteve Coochin

DeveloperSteve Coochin

feature laravel tips

21 avril 2022

0 minutes de lecture

Centré sur les développeurs, Laravel est souvent décrit comme « le framework PHP des artisans du Web ». C’est l’un des frameworks les plus utilisés de l’écosystème PHP. Il s’appuie sur une vaste communauté et de nombreuses branches spécialisées dans le développement d’applications de toutes sortes.

Lancée en 2011, la version 1.0 de Laravel propulse aujourd’hui les sites d’entreprises internationales telles que 9GAG, la BBC et Pfizer. Au fil des ans, le projet principal s’est beaucoup développé et se décline en plusieurs composants, largement utilisés pour créer des sites Web et des plateformes :

  • Laravel/core — C’est le principal point de référence pour la communauté et le point de départ recommandé pour découvrir Laravel. Ce projet contient tout le nécessaire pour créer rapidement un site Web, avec des tutoriels et une documentation faciles à suivre. PHP Composer enregistre en moyenne plus de 16 000 installations sur 24 heures de Laravel/core.

  • Laravel/framework — Ce framework fournit les fonctionnalités essentielles de Laravel et sert de dépendance à de nombreux autres projets. Depuis son référencement dans PHP Composer en 2013, il a été installé plus de 183 millions de fois, avec une moyenne de plus de 86 000 installations par jour. Il est utilisé comme dépendance par plus d’un million de plateformes et de produits open source.

  • Laravel Sails — Cet outil s’appuie sur une interface en ligne de commande légère, spécialement conçue pour fonctionner avec l’environnement de développement Docker par défaut de Laravel. Sails permet de créer des applications Laravel avec une approche basée sur les conteneurs, pour gagner en rapidité et en évolutivité.

Premiers pas avec PHP Laravel

La mise en route de Laravel est simple et rapide, en particulier grâce au gestionnaire de paquets PHP PHP Composer. Pour créer un projet, il suffit d’exécuter composer create-project Laravel/Laravel example-app dans la ligne de commande. Vous pouvez ensuite utiliser le serveur intégré à Laravel : accédez au répertoire que vous venez de créer avec cd example-app, puis exécutez php artisan serve. Un serveur local est alors lancé, par défaut à l’adresse 127.0.0.1:8000.

Page d’accueil sombre de Laravel affichant le logo Laravel et des liens vers la documentation, Laracasts, Laravel News et Vibrant Ecosystem.

Ce que j’apprécie particulièrement chez Laravel, c’est son approche centrée sur les développeurs, très bien pensée : les outils qu’ils utilisent souvent sont intégrés. Laravel peut créer automatiquement un dépôt git depuis la ligne de commande avec l’indicateur --git flag. Vous pouvez même spécifier une branche avec l’indicateur --branch="main".

5 façons de sécuriser Laravel

Voyons comment sécuriser vos installations Laravel et mieux protéger vos utilisateurs.

1. Configurer le framework

Bien configurer votre application dès le départ pour ses différentes phases de développement est essentiel à tout projet. Avec Laravel, vous pouvez définir les configurations de développement et de production dans le fichier .env. Celui-ci ne doit jamais être accessible publiquement, car il contient des informations de configuration de l’application.

En production, veillez à désactiver le mode débogage. Pour ce faire, configurez APP_DEBUG sur false. Le mode débogage est utile pendant le développement, mais sa désactivation en production empêche le public d’accéder à des erreurs, des chemins ou des informations système sensibles.

Il est également important de vérifier qu’une clé d’application a été générée pour votre installation Laravel. Elle sert au chiffrement symétrique des cookies, des URL signées de session et des jetons de réinitialisation de mot de passe. Pour la générer, utilisez key:generate, généralement via les commandes Artisan (ou php artisan key:generate, selon votre configuration Laravel).

2. Prévenir les injections SQL

L’un des principaux atouts de Laravel est l’utilisation d’Eloquent ORM dans son framework. Celui-ci s’appuie sur des liaisons PDO pour prévenir les injections SQL lors des interactions avec la base de données.

Un ORM est un logiciel qui facilite la gestion des enregistrements d’une base de données en représentant les données sous forme d’objets. Il sert de couche d’abstraction au-dessus du moteur de base de données utilisé pour stocker les données d’une application.

En complément d’Eloquent, le PHP natif peut apporter une couche supplémentaire de validation et de nettoyage, en particulier pour les données saisies par les utilisateurs. On ne peut jamais trop assainir les données (sauf si cela nuit au chargement des pages et aux performances). Pour en savoir plus, consultez notre article sur les 5 meilleures façons de prévenir les injections SQL avec PHP.

3. Gérer les cookies et les sessions

Protéger les sessions et les cookies des utilisateurs est un excellent moyen de préserver au mieux la sécurité de leurs données. Voici quelques points à garder à l’esprit pour leur gestion dans Laravel.

Activez HttpOnly pour les sessions Laravel de votre application, dans le fichier config/session.php. Vous ajouterez ainsi une couche de sécurité et empêcherez JavaScript d’accéder aux cookies de session. Définissez une durée d’inactivité de session courte afin que l’utilisateur soit automatiquement déconnecté après une période d’inactivité.

La configuration du domaine des cookies se trouve également dans le fichier config.session.php. Elle doit être définie sur Null, sauf si vous utilisez des sous-domaines. La définition de l’attribut de domaine du cookie applique la règle same origin : seul le domaine principal peut définir le cookie. Il est également recommandé de définir l’attribut de cookie SameSite sur lax ou strict afin de limiter les cookies au site d’origine ou au même site.

L’option de configuration la plus importante du fichier config/session.php est HTTPS only. Son activation protège contre les attaques de type MITM (interception), et impose l’utilisation exclusive d’URL sécurisées en HTTPS.

4. Gérer les fichiers téléversés en toute sécurité

Validez toujours le type de fichier à l’aide de MimeTypes :

$request->validate([
    'photo' => 'file|size:100|mimes:jpg,bmp,png'
]);

En outre :

  • Ne laissez pas les utilisateurs saisir les chemins ou les noms de fichiers. Utilisez toujours des chaînes de hachage ou des noms générés par le système.

  • Évitez les fichiers XML et les archives ZIP si possible, ou gérez-les de manière sécurisée.

  • Utilisez basename() pour supprimer les segments de chemin indésirables.

5. Utiliser des outils SAST et SCA

Ces outils analysent votre code et les manifestes de paquets pour sécuriser au mieux votre code et l’utilisation de paquets open source. Surtout, ils permettent de mettre en place des analyses continues et de vous alerter si une vulnérabilité est détectée dans une version de paquet.

Consultez notre guide sur l’association du SAST et du SCA pour mieux couvrir les risques de votre projet.

Analyse de la composition logicielle (SCA)

Les outils SCA, comme Snyk Open Source, sont particulièrement utiles avec des gestionnaires de paquets open source tels que PHP Composer. Un outil SCA peut analyser le manifeste Composer pour détecter les vulnérabilités connues susceptibles d’affecter certaines versions de paquets open source.

Base de données des vulnérabilités Snyk répertoriant une injection de commandes critique affectant les versions de Laravel/framework antérieures à la version 5.8.17.
Snyk Open Souce hiérarchise les vulnérabilités afin que vous puissiez traiter plus rapidement les problèmes critiques.

Un bon outil SCA analyse en continu vos projets, bibliothèques open source et dépendances à la recherche de vulnérabilités. Chaque année, nous constatons une hausse des chemins vulnérables dans les écosystèmes. Leur détection précoce peut vous alerter en cas de nouvelles menaces, comme la récente vulnérabilité de PHP dompdf. 

Tests de sécurité des applications statiques (SAST)

Les outils SAST, comme Snyk Code, peuvent aider à repérer les vulnérabilités potentielles dans une base de code. Vous pouvez ainsi examiner les sections de code concernées.

L’analyse Snyk Code pour PHP est particulièrement utile : elle met en évidence les zones à risque et vous aide à remonter les fonctions, les objets et les frameworks pour approfondir l’analyse.

Vue du flux de données Snyk Code mettant en évidence le hachage MD5 non sécurisé dans le code Filesystem.php de Laravel.
La vue Flux de données de Snyk Code met en évidence les zones potentiellement non sécurisées de votre code.

À partir d’exemples concrets de la vulnérabilité concernée, Snyk Code propose également des mesures correctives.

Vue d’analyse des correctifs de Snyk Code pour CWE-916, présentant les détails d’une vulnérabilité liée au hachage des mots de passe, des conseils de prévention et des exemples de correctifs en PHP.
La vue d’analyse Fix de Snyk Code fournit des informations détaillées sur les vulnérabilités et suggère des étapes pour les corriger.

Analysez vos projets Laravel plus vite que vous ne pouvez dire « PHP artisan »

L’analyse de vos projets Laravel avec Snyk est simple et rapide. Pour commencer, créez un compte Snyk gratuit, puis connectez-vous sur la plateforme de votre choix. Une fois votre compte créé, plusieurs options s’offrent à vous pour lancer l’analyse de vos projets.

Connecter votre dépôt

C’est de loin ma méthode préférée (et la plus simple) pour recevoir des alertes en continu sur les nouvelles vulnérabilités. Dans votre tableau de bord Snyk, cliquez sur Add Project en haut à droite, puis sélectionnez le dépôt de votre choix. S’il ne figure pas dans le menu rapide, cliquez sur Other et choisissez la plateforme souhaitée sur la page des intégrations.

Page des intégrations Snyk présentant les intégrations de gestion de code source pour GitHub, GitHub Enterprise, GitLab, Bitbucket et Azure Repos

Après avoir suivi les étapes de connexion de votre compte, vous pouvez connecter le dépôt de votre projet depuis la page de configuration. Cochez la case correspondant au type de dépôt, puis cliquez sur Add selected repository.

Écran de sélection des dépôts GitHub dans Snyk, avec « laravel » recherché et le dépôt laravel sélectionné pour les tests.

Installer la CLI Snyk

La CLI Snyk permet d’intégrer directement des outils SCA et SAST à votre ligne de commande en exécutant quelques lignes de code. Vous pouvez l’installer via npm ou Yarn, des exécutables autonomes ou des installateurs spécifiques à votre système d’exploitation.

Une fois la CLI Snyk installée, vérifiez son bon fonctionnement en exécutant snyk –version. Connectez-la ensuite à votre compte Snyk en exécutant snyk auth dans la ligne de commande. Votre navigateur par défaut devrait ouvrir la page d’authentification.

Page d’authentification de Snyk CLI avec le titre « Authenticate for CLI » et le bouton Authenticate

Cliquez sur Authenticate : vous pouvez maintenant analyser un projet avec ma commande CLI préférée, snyk test.

Sortie du terminal affichant un test Snyk d’une application exemple Laravel, sans chemin vulnérable détecté, ainsi que des informations sur les packages npm.

Intégrations aux IDE

Ces outils d’analyse peuvent également être intégrés à votre IDE pour vérifier et analyser votre application en temps réel pendant son développement. Par exemple, l’intégration Snyk pour VS Code analyse les paquets et les dépendances en temps réel. Découvrez comment la mettre en place et comment fonctionne l’intégration à Visual Studio Code en temps réel.

Pensez à contribuer aux projets open source

Pensez à contribuer aux projets open source dès que vous le pouvez, surtout si vous les utilisez régulièrement. La communauté Laravel s’est considérablement développée au fil des ans, à mesure que les fonctionnalités et l’adoption progressaient, contribuant à faire du projet ce qu’il est aujourd’hui.

Lancez-vous dans les compétitions Capture The Flag

Apprenez à résoudre des défis de capture du drapeau en regardant à la demande notre atelier virtuel d’initiation.

Lire la suite

blog feature snyk container custom base recommendations
Blog

Découvrez Evo Agentic AppSec : une sécurité au rythme du développement de l’IA

Le développement piloté par l’IA dépasse les workflows de sécurité traditionnels. L’AppSec agentique de Snyk s’appuie sur des agents de sécurité pour détecter, corriger et vérifier les vulnérabilités en continu, tandis que les équipes définissent les exigences.

blog feature ai violet
Blog

VulnBump : les agents IA peuvent-ils corriger les dépendances vulnérables sans casser le build ?

VulnBump évalue des agents IA sur 307 mises à niveau de dépendances réelles. Une correction n’est comptabilisée que si la vulnérabilité disparaît et que la compilation et les tests restent au vert.

Blog

Les modèles de pointe ont trouvé les vulnérabilités. Seul l’attaquant a trouvé les chaînes d’exploitation.

L’analyse statique a détecté les failles, mais seuls des tests d’attaque en conditions réelles ont prouvé comment elles pouvaient être enchaînées pour provoquer des compromissions. Comparaison d’Evo COS, de Claude Security et de Claude Code Security.