Analyse sécurité - Arylmera/DevWeb_Projet GitHub Wiki
Biens à protéger
Infrastructures
- Serveur Web (Firebase)
- Serveur API et BDD (VPS)
- SGBD (MySQL)
Données
- Code Front-End (Angular)
- Code API (Node.js)
- Base de données
Vulnérabilités
Infrastructures
Serveur Web
Le code font-end est hébergé sur Firebase (Services Google). Il ne devrait pas avoir de problème de sécurité mais nous n'avons aucun contrôle dessus.
Serveur API et base de données
Les deux services back-end sont hébergés sur des vps du cours d'Admin. Les vulnérabilités (ports, accès, etc.) sont donc nombreuses étant donné que nous apprenons la sécurité.
SGBD
Pour le SGBD nous utilisons MySQL. À ce stade du projet la sécurité du SGBD est plus que minimale. Utilisation du user root, mot de passe faible. Nous n'avons pas encore vu comment sécuriser les communications.
Données
Code front-end
Les principales vulnérabilités sont la gestion de la sécurité des comptes et les attaques par injection de code.
Code API
La sécurité des interactions avec l'API n'est pas gérée (gestion des accès à l'API). Cela rend d'autant plus les informations de la base de données vulnérables.
Base de données
Les données sont des informations publiques, il n'y a pas forcément de sécurité à avoir pour protéger l'accès aux informations. Néanmoins, les interactions de modification des données et de leur structure ne sont pas sécurisées à cause du manque de sécurité sur les services qui l'appellent.
Risques associés
Infrastructures
Étant donné les vulnérabilités de sécurité d'accès aux serveurs vps, on risque un piratage des serveurs et/ou des services hébergés. Cela entraîne une menace de la disponibilité des serveurs répercutant directement la qualité de service de notre site Web et de ses fonctionnalités. Pour le serveur Web, on pourrait avoir des problèmes inattendues.
Données
Les vulnérabilités de programmation dans les différents services menacent l'intégrité des données et de la structure de la base de données.
Classement des menaces
- Sécurité de l'API.
- Sécurité des vps.
- Sécurité de la base de données.
- Sécurité des programmes.
- Hébergement du serveur Web.
Contre-mesures
Communications sécurisées
Les Certificats SSL sont déjà "installés" sur le serveur de l'API ainsi que sur les serveurs Web.
Cross-Origin Resource Sharing (CORS)
Le partage des ressources entre origines multiples consiste à ajouter des en-têtes aux requêtes HTTP afin de permettre à un utilisateur d'accéder à des ressources d'un serveur par un autre serveur. Ou encore d'injecter du code HTML dans un site Web et avoir un impact autant sur la page Web, que sur sa base de données ou l'hébergeur.
L'API CORS est implémenté dans tout moteur de recherche majeur et possède notamment deux en-têtes principales :
Access-Control-Allow-Origin: celui-ci permet d’indiquer au navigateur les domaines autorisés à recevoir une réponse du serveur.Access-Control-Allow-Credentials: cet en-tête indique si les cookies doivent être transmis ou non dans la réponse.
Système d'authentification pour l'API
Il faudrait installer une authentification pour l'API.
Sécurité de la base de données
Rendre inaccessible la base de données depuis l'extérieur et mettre en place une meilleure gestion des users -> ne plus utiliser le root, créer des users avec plus ou moins de privilèges.
Mise en oeuvre des contres-mesures
Base de données
Mise en place d'un utilisateur 'api' sur la base de données de la solution qui n'a de de droit que sur cette base de données. En effet, nous n'avons pas besoin d'autres utilisateur vu que la base de données n'est utilisé que par l'api qui a besoin de tous les droits.
API
Mise en place d'une sécurité par clé 'maison'. Pour pour faire une requête sur l'API, il faut posséder la clé secrète et la renseigner dans les paramètres de requête avec le bon nom de paramètre. Un middleware est lancé à chaque requête pour vérifier la clé. L'API renvoie une réponse 401 dans le cas ou la clé est erronée ou inexistante.
Cross-Origin Resource Sharing (CORS)
Mise en place du CORS automatique au même titre que les autres sécurisées web par le hosting Firebase.
Documentations des risques
Base de données
Top 10 des risques de sécurité sur les base de données
API
Cross-Origin Resource Sharing (CORS)
Maintenance
Site web FireBase
En ce qui concerne la maintenance du site web en lui même, ceci est majoritairement pris en charge par Fireabase. Le maintient de ce service n'est pas de notre ressort, et google nous garantis la disponibilité de notre site. Pour une maintenance des fichiers interne, un simple re déploiement avec la commande ng deploy permet de mettre l'entièreté du site a jour (voir section installation).
De plus, le redéploiement du site ne coupe pas la disponibilité de celui-ci. Durant tout le processus automatique de redéploiement le site reste disponible pour les utilisateurs et la transition ce fait lors du chargement d'une page.
API et base de données
pour ces deux services, il est aisé de pouvoir les réinstaller (fichiers de back-up, simplicité des services et de déploiement) et vu la simplicité du code on peut améliorer la sécurité des deux services facilement. Lecture des logs sur les VPS.