Bonjour à tous,
J'ai cru comprendre que par les dires de certaines personnes qu'il ne faut pas stocker les clés de chiffrement sur la même base de données ou le même serveur, savez vous comment faire s'il vous plaît ? Je vais utiliser sodium.
Bonjour à tous,
J'ai cru comprendre que par les dires de certaines personnes qu'il ne faut pas stocker les clés de chiffrement sur la même base de données ou le même serveur, savez vous comment faire s'il vous plaît ? Je vais utiliser sodium.
Effectivement en règle général c'est déconseillé. Puisque si le serveur vient à être compromis , si les données son cryptées mais que la clé est facilement accessible ca ne sert à rien.
La problématique étant que si on stock la clé ailleurs , comment sécuriser la connexion qui permet de récupérer la clé ? C'est un peu le serpent qui se mort la queue.
* L'idéal, c'est de ne pas avoir la totalité de la clé. Par exemple une partie de la clé est commune à tous les utilisateurs et elle est ensuite complétée par une partie que seule l'utilisateur connais. L'inconvénient c'est que tu n'as toi même pas accès aux données.
* La solution suivante c'est d'utiliser les capacités matérielles. Par exemple les modules TPM pour stocker la clé. Ce n'est, à ma connaissance, pas accessible en PHP
* On peut aussi imaginer une clé découpée en plusieurs parties. Une partie dans le code PHP , une partie dans un fichier hors racine web , une partie dans la bdd. C'est légèrement mieux que d'avoir la clé à un unique endroit.
* La dernière solution , stocker la clé dans un fichier en dehors de la racine web. idéalement dans protégée par un mot de passe.
Un post intéressant sur le sujet : https://security.stackexchange.com/a/48085
Merci de ton aide Grunk, je ne m'y connais pas en sécurité informatique donc c'est galère.
Oui les deux dernières solutions proposées par grunk sont la plupart du temps assez simples à mettre en place. Mais bon à part cela si tu n'y connais rien en sécurité informatique, tu peux aussi avoir des trous de sécurité dans ton code. L'oswap permet d'en apprendre un peu plus. Et puis évidemment fais gérer ton serveur par des professionnels (ou prend un mutualisé chez un hébergeur professionnel), la gestion serveur est un métier qui ne s'improvise pas.
Merci Abciweb. J'ai pris un hébergement web mutualisé chez Hostinger. Je m'étais rendu compte que je comptais faire des trucs qu'il est mieux de laisser à une entreprise de faire, du coup Hostinger là, étant donné à quel point je suis nul en sécurité.
J'ai un administrateur réseau dans ma team, pas encore dispo pour l'instant. A par ça actuellement il y'a que moi sur le backend. J'ai aussi vue qu'une des autres solutions était de mettre la base de données sur un serveur différent du serveur hébergeant le site web https://security.stackexchange.com/q...encryption-key dans le point 5 de la réponse donné par une personne.
Ce n'est pas toujours possible, notamment pour les serveurs mutualisés type OVH, et pour des raisons de sécurité précisément, ils peuvent ainsi mieux maîtriser tout le processus de connexion au serveur de base de données.
Après dans la pratique les serveurs de base de données gérés par les hébergeurs (dans les hébergements mutualisés) se font très rarement pirater directement. Ils ont des pros qui se renseignent en permanence sur les nouvelles formes d'attaque, des processus de surveillance automatisés, des sauvegardes automatiques sur différents serveurs etc. La plupart du temps les pirates exploitent des failles dans le code des fichiers, processus d'authentification, injection sql etc. C'est pour cette raison que les sites Wordpress sont souvent visés car le code est open source et il suffit donc d'utiliser un module qui a une faille et qui n'est pas (ou plus) mis à jour pour se faire pirater son site.
Pour dire que si tu es développeur ton principal travail est la sécurité du code (injections sql... cf oswap), les contrôles de données côté serveur, token dans les formulaires, le process d'authentification si tu as un espace administrateur, utilisation de https et non pas http, etc. Si tu ne connais pas bien tous les aspects tu peux aussi utiliser un framework, symfony (mais long à maîtriser) ou autre.
Partager