JEE Back-end

Base de la sécurité du back-end

Sécurité du back-end

Cette séance n'est pas un vrai cours de sécurité mais va essayer de vous donner des bases et une culture solide.

Le meilleur moyen de progresser sur les aspects liée à la sécurité c'est de constamment se tenir au courant des failles classiques.

La référence du domaine:

https://owasp.org/www-project-top-ten/

Vous pouvez aussi participer à des Capture The Flag (CTF). Par exemple, Google CTF.

En un slide!

Never trust user input

Quelques exemples

Vérification des données sur le front-end

La vérification des données sur le front-end seulement n'apporte aucune garantie.

HTTPS

Il faut absolument utiliser HTTPS. Pour le projet ce n'est pas possible car il vous faudrait un nom de domaine fixe.

HTTPS permet:

  • d'encrypter la communication entre le serveur et les clients,
  • de guarantir au client qu'il parle bien au bon serveur,
  • mais cela ne resoud en rien les problèmes vu précédement!

Principe de l'authentification

Les mots de passes sont stockés en BD avec les identifiants

  • Le client envoie son identifiant et son mot de passe.
  • Le serveur vérifie en BD que le mot de passe et correcte.
  • Si c'est le cas, il stocke dans la SessionHttp (i.e. avec un Cookie) que l'utilisateur est identifié.

Gestion des mots de passe

L'idée clé est de minimiser les dégats si votre BD est compromise.

  • les mots de passes ne doivent pas être stocker en clair,
  • il ne suffit pas stocker une version hashée des mots de passe,
  • il faut rajouter du salt pour chaque mot de passe.

Spring Security est un module de Spring qui suit toutes les bonnes pratiques et qui permet en plus de gérer le controle d'accès.

Les points de vigilances

  • Les injections SQL
  • Renvoyer trop de données
  • Cross-site scripting