Stagiaire en Cyber-Sécurité & Hardening (React/Next.js)
- Montréal, lieu précisé lors de l'entrevue
- Durée : 2 mois (Lundi au Vendredi)
À propos du projet
Vous rejoindrez l'équipe technique d'artmontreal.ca, le site d'un organisme culturel déployé avec GitHub et Vercel.
Vos Missions
Votre objectif principal est d'identifier les vulnérabilités et de "durcir" (harden) notre infrastructure applicative.
Audit de Sécurité
Analyser le code source (React/Next.js) pour détecter les failles courantes (OWASP Top 10 : XSS, Injections, SSR vulnerabilities).
Correction de Failles
Proposer et implémenter des correctifs directement dans le code via des Pull Requests sur GitHub.
Config Vercel & Headers
Optimiser les headers de sécurité (CSP, CORS, HSTS) et la configuration de déploiement.
Gestion des dépendances
Auditer les paquets NPM et résoudre les alertes de sécurité.
Profil Recherché
- Connaissance solide de JavaScript/TypeScript et de l'écosystème React.
- Compréhension des mécanismes de sécurité web (Authentification, JWT, HTTPS, Headers).
- Familiarité avec Git et GitHub.
- Curieux(se), rigoureux(se) et passionné(e) par le "White Hat Hacking".
Objectifs
Les objectifs à atteindre sont basés sur les 4 grandes axes de responsabilités du stagiaire en Cyber-Sécurité : 1) Audit de sécurité, 2) Correction de failles, 3) Configuration de Vercel et Headers et 4) Gestion des dépendances. Les objectifs de chaque axe sont sur une base journalière, et ne sont pas tous à réaliser à chaque jour. Ils servent comme une sélection d'objectifs que le stagiaire peut choisir de prioriser selon la situation du projet.
Important
L'usage de l'IA dans le travail du stage est permis à condition que le stagiaire comprenne la démarche suivie et le résultat produit. En particulier, il doit pouvoir expliquer ce qui est écrit dans sa Pull Request lors de la passation du code au Scrum Master. Un stagiaire incapable d'expliquer son propre travail lorsqu'on le lui demande s'expose à une exclusion du stage.
Questions d'entretien
1. Peux-tu te présenter et expliquer pourquoi tu veux faire un stage en cybersécurité ?
Je suis étudiant ou débutant en cybersécurité avec de bonnes bases en JavaScript et développement web. Je m'intéresse particulièrement à la sécurité applicative et au hardening des applications modernes. Ce stage représente une opportunité concrète d'appliquer mes connaissances sur des projets réels en production.
2. Pourquoi la cybersécurité est-elle importante pour artmontreal.ca ?
Ces plateformes sont accessibles publiquement et peuvent être exposées à différentes attaques. La cybersécurité permet de protéger les données des utilisateurs, la réputation des plateformes et d'assurer leur disponibilité.
3. Qu'est-ce que l'OWASP Top 10 ?
L'OWASP Top 10 est une liste des vulnérabilités web les plus critiques, servant de référence pour sécuriser les applications web modernes.
4. Qu'est-ce qu'une attaque XSS ?
Une attaque XSS consiste à injecter du code JavaScript malveillant dans une application afin qu'il s'exécute dans le navigateur d'un autre utilisateur.
5. Comment prévenir les attaques XSS dans une application React / Next.js ?
En évitant l'utilisation de dangerouslySetInnerHTML, en validant les entrées utilisateur, en profitant de l'échappement automatique de React et en mettant en place une Content Security Policy (CSP).
6. Pourquoi Next.js peut introduire des risques côté serveur ?
Next.js utilise le rendu côté serveur et des API Routes. Une mauvaise gestion des entrées ou des variables d'environnement peut exposer des failles de sécurité.
7. Qu'est-ce qu'une API Route et quels sont les risques associés ?
Une API Route est un endpoint backend dans Next.js. Les risques incluent l'absence d'authentification, la mauvaise validation des données et l'exposition d'informations sensibles.
8. Qu'est-ce qu'un JWT ?
Un JWT (JSON Web Token) est un jeton signé utilisé pour l'authentification et l'échange sécurisé d'informations entre le client et le serveur.
9. Quelles sont les bonnes pratiques pour sécuriser un JWT ?
Utiliser HTTPS, limiter la durée de vie du token, le stocker dans des cookies sécurisés (HttpOnly, Secure) et éviter le stockage dans le localStorage.
10. À quoi servent les headers de sécurité ?
Ils renforcent la sécurité côté navigateur et protègent contre certaines attaques comme le XSS, le clickjacking ou les attaques de type MITM.
11. Citer des headers de sécurité importants.
Content-Security-Policy (CSP), Strict-Transport-Security (HSTS), X-Frame-Options, X-Content-Type-Options, Referrer-Policy.
12. Qu'est-ce que le hardening d'une application ?
Le hardening consiste à réduire la surface d'attaque d'une application en sécurisant le code, les dépendances et la configuration de déploiement.
13. Pourquoi les dépendances NPM sont-elles risquées ?
Elles peuvent contenir des vulnérabilités ou du code malveillant. Une seule dépendance compromise peut affecter toute l'application.
14. Comment auditer les dépendances ?
En utilisant npm audit, GitHub Dependabot, et en mettant régulièrement à jour ou supprimant les dépendances inutiles.
15. Comment proposer un correctif de sécurité ?
Créer une branche dédiée, implémenter le correctif et ouvrir une Pull Request détaillée pour revue.
16. Comment faire une pull request impliquant une mise à jour en cybersécurité sur GitHub ?
17. Que fais-tu si tu découvres une faille critique en production ?
Informer immédiatement l'équipe, documenter la faille et participer à la mise en place d'un correctif rapide.
18. Pourquoi le White Hat Hacking t'intéresse ?
Parce qu'il permet d'utiliser ses compétences techniques de manière éthique pour protéger les systèmes.
19. Quel est ton objectif à la fin de ce stage ?
Être capable d'auditer et de sécuriser une application React / Next.js en production et gagner en autonomie en cybersécurité.
Postuler
Envoyez votre CV et vos relevés de notes en précisant le stage visé.