Bonjour à tous !
Je suis actuellement en train de créer un site internet. Pour le contexte et pour faire simple celui-ci sera destiné à ma société, il y a une partie vitrine, compte client et dashboard d'administration.
Mais peu importe le site en question, ce qui m'intéresse ici c'est le nom des tables de la base de données. En effet jusqu'ici je m'étais jamais vraiment poser la question, mais es que le nom des tables est important ?
Voici ma base de données actuelle :
Avez-vous des conseils à ce propos ? Certains nom sont-ils à éviter ? Par exemple certaine de mes tables commencent par ADMIN_, cela pourrait être un risque pour la sécurité du site ?
Autre question concernant la sécurité :
Lorsque l'on ajoute une donnée sensible dans une table comme un mot de passe généralement on le hash, et pour le coup je me demande es ce que le faire pour TOUTES (voir quasiment toutes) les données, comme une adresse, un nom de famille ou autre... ? Cela aurait-il vraiment une utilité voir même une sécurité supplémentaire ?
Je vous remercie d'avance pour vos retours et conseils !
Bah, c'est bien là, il y a peut-être juste que tu utilises du Français et de l'Anglais en même temps.
Bonsoir,
admin_users et users vont fortement se ressembler, autant ne faire qu'une table et ajouter un champ "fonction_user"
de même pour admin_users_compagny et users_compagny
je dirais même avoir aussi un champ dans users et y ajouter "compagny_id" et dans compagny, tu as toute les infos et tu fais le lien entre eux
Alors comme dit plus haut, la base de données est en franglais, faudrait passer le tout en anglais
Ensuite ce serait plus simple de t'aider avec un aperçu complet de la base (les collonnes, histoire de voir les tables plus lourdes et les tables pivots)
Mais avec ce que je vois
Perso je ferais une table users
et une table roles
pour remplacer admin_users
et clients
, et ensuite un pivot role_users
Ton user aura un id
, et tes roles auront la liste des roles admin
et customer
(tu pourras même ajouter guest
et moderator
par la suite, enfin bref tu pourras créer des roles à la volée)
Tu peux ensuite mêttre à la place de admin_access
(qui pour moi doit représenter les permissions d'un admin spécifique) une table permissions
, role_permissions
et user_permissions
Ce sont une liste des permissions et deux pivots:
permissions -> can (ex: dashboard.access
, dashboard.edit
, users.add
, users.edit
, users.delete
...)
role_permissions -> role_id, permission_id
user_permissions -> user_id, permission_id
Avec cette config tu pourras créer facilement un user avec des roles et des fonctions spécifiques depuis un back office
Pour les autres tables, je n'arrive pas à deviner le role de chaque table donc... ^^'
Ensuite pour les données sensible, si faut que tu cryptes les données, c'est non seulement indispensable niveau sécurité, mais aussi obligatoire d'un point de vue légal sur certaines données (email, adresse postale, informations bancaires...)
Et il y'a une spécificité légale pour les infos bancaires: l'enregistrement des infos bancaire en base de données doit être optionnelle, le client doit pouvoir choisir entre rentrer à chaque fois ses infos bancaires ou enregistrer sa carte en base de données, sauf si ton site propose un abonnement en ligne, dans ce cas tu peux enregistrer la carte (mais il faut quand même dans les condition ajouter que le client accepte que tu enregistres sa CB en base)
Pour le cryptage, il y'a autre chose à prendre en compte: c'est la clé de décryptage (private_key), surtout tu ne doit pas la mettre dans ton projet, sinon n'importe qui pourras fouiller dans tes fichiers et retrouver cette clé, et il pourras ensuite décrypter les infos sensibles, ton cryptage aura servit à rien, le problème c'est que ton site a besoin de cette clé
Tu dois mettre ta clé dans une variable d'environnement depuis ton hebergeur, tu pourras ensuite la récupérer avec getenv()
ou une superglobale $_SERVER
ou $_ENV
Ensuite si tu veux pouvoir utiliser GitHub, il faudrait utiliser les github secrets, et mettre un fichier de configuration, trop compliqué à expliquer je te met le lien de la doc x)
https://docs.github.com/en/actions/reference/encrypted-secrets