Sécurité - RobinDumontChaponet/synthese GitHub Wiki

Sécurité

Tout le système doit être sécurisé à la fois contre les attaques extérieures mais également par les attaques intérieures ou mauvaises utilisations. Il faut donc tout sécuriser.

La sécurité par les autorisations :

  • La première chose à considérer est donc la question suivante : qui a le droit d'accéder au site? Toutes les personnes ayant l'autorisation d'y accéder doivent avoir un compte utilisateur sur le site. Une personne qui n'en a pas ne peux y accéder.
  • La seconde : Que peut-on faire avec un compte ? A chaque compte sera associé un type de profil. Chaque type de profil aura ses autorisations. Les autorisations seront définies en fonction des pages et des actions autorisées. Par exemple les professeurs pourront voir les profils des anciens étudiants mais ne pourront pas les modifier.
  • Il y a un troisième point à prendre en compte. Même si la personne a une certaine autorisation, il faut dans certains cas contrôler ce que cette personne fait. Par exemple dans le groupe de discussion de la promotion, on permet aux anciens de publier mais on va contrôler ce qu'ils écrivent et ne pas les laisser écrire tout et n'importe quoi afin d'éviter des problèmes. C'est pourquoi avant d'être visible, leurs posts devront faire l'objet d'une vérification par une personne ayant un profil d'administrateur.

La sécurité contre les attaques :

Plusieurs règles sont à établir pour éviter qu'un utilisateur interne ou externe puisse attaquer le site.

  • La première règle est de toujours vérifier les informations qu'un utilisateur entre. On n'utilise pas directement ces informations pour les insérer dans la base de données. On contrôle d'abord les informations et on utilise des requêtes préparées pour la base de données. Le but est d'éviter toute injection de code dans le site comme les injections SQL.
  • La seconde règle est de toujours vérifier les données que l'on passe d'une page à une autre afin d'éviter que quelqu'un ne les modifie. Par exemple si on passe un paramètre id à une page et que cet id doit être un nombre, on vérifie que le paramètre reçu soit bien un nombre et on stoppe toute la page dans le cas contraire. Les conditions dans les setters expliquées dans la partie "Objets métiers" servent à faire de telles vérifications.