Skip to content

Sécurité

quentinrld edited this page Dec 15, 2022 · 9 revisions

Sécurité

Première analyse de sécurité

Screenshot

image

Cross-site request forgery

Avec cette vulnérabilité, l'attaquant oblige un utilisateur connecté via une requête HTTP frauduleuse utilisant les droits de l'utilisateur pour exécuté une action sans le savoir. Cette attaque ce base sur différente caractéristiques :

  • l'authentification des utilisateurs
  • exploite les droits lier aux utilisateurs
  • l'envoie de requête HTTP pour déclenché une action à l'insu de l'utilisateur

Solution conseillé

  • Demandé une confirmation pour des action importantes
  • Demandé une confirmation via mot de passe lors du changement des informations personnel
  • Utilisé des token dans les formulaires
  • Vérifier d'où viens l'utilisateur (regarder si il avait accès à cette page sur la page ou il était avant)

Content Security Policy

La Stratégie de sécurité du contenu améliore la sécurité des sites web, le CSP permet de réduire les attaques de type Cross Site Scripting ou d'injection de contenu. Ces attaques ont généralement pour objectifs de volé des données, de changer la face d'un site ou encore de propagé des malwares. Pour configurer le CSP il faut créer des règles ainsi que l'entête HTTP grâce à ça, par exemple une page peux charger des images stocké n'importe ou mais ne peux envoyer des requête que vers des endroits bien défini

Cross-origin resource sharing (CORS)

Le CROS permet de gérer les requêtes venant de différente origine sécuriser et de transférer des données entre le navigateur et le server Web. Généralement CORS est utilisé dans des API pour aidé à réduire le risque de requête multi-origines.

Clickjacking

Le principe de cette attaque est de superposer un site malveillant par dessus une page "victime" pour que l'utilisateur pense cliqué sur une lien dans lequel il a confiance mais serra redirigé vers un autre endroit. Pour s'en protéger nous avons plusieurs solution à envisager :

  • Utilisé un entête HTTP spécifique X-Frame-Option avec une option pour spécifier les autorisations
  • Utilisation de protection d'en le script JavaScript

Hashage des mots de passes

Pour éviter toutes fuites de mot de passes ces derniers sont tout d'abord hasher dans le frontend en sha256 avec du sel puis serra rehasher dans le backend avec bcrypt du sel. Grâce à ce procédé, on empêche la récupération de mot de passe lors d'attaques de type man in the middle car il ne pourra récupérer que le premier hash du mot de passe mais ne pourra pas s'en servir lors d'une requête de connexion.

Proxy et connexions

Pour apporter de la protection supplémentaire nous avons installé un Reverse-Proxy qui sera le seul à pouvoir communiquer avec notre application. Cela nous permettra d'anonymiser notre application et d'installer divers services tel qu'un pare-feu, une connexion https et fail2ban. Si la requête passe nos sécurités elle pourra accéder à notre frontend hosté sur Netlify. Netlify aura ensuite une connexion exclusive à notre backend qui lui-même aura une connexion exclusive à notre base de données.

Capcha

Nous avons décider d'installer un Capcha pour permettre de réduire la quantité de spams sur notre site et parce qu'ils sont une barrière efficace contre les attaques automatiques. Cela nous permettra de différencier automatiquement les utilisateurs humain des machines qui nous attaqueraient. Pour cela on a plusieurs choix qui nous sont possible, comme une case à cochée, une suite de caractères à réécrire ou une différentiation d'images.