Je voudrais aller à ce sujet de la manière suivante.
données Protection contre les matériels volés:
Utiliser le chiffrement du disque comme indiqué dans les messages précédents.
données Protection si le serveur est compromise (piraté):
J'utiliser deux serveurs différents pour ce projet, un serveur de travail et un serveur avant.
A) serveur travailleur
- Cela a DB avec des mots de passe etc, il se connecte également à d'autres services.
- Pour se connecter au serveur de travail, les utilisateurs peuvent le faire via une API. API devrait avoir sur la fonction, insertUserData, qui permet à l'utilisateur d'insérer des données, API échappé à toutes les entrées.
- L'API utilise un utilisateur de base de données qui n'a que les droits d'entrée sur la table userData. Ce serait le seul moyen de contacter ce serveur.
- Autoriser uniquement les connexions SSL .
- Ce serveur exécute à son tour des travaux chroniques qui se connectent à des services externes, en extraient des données et remplissent sa base de données. Utilisez une base de données différente avec différents privilèges d'utilisateur.
- Ce serveur exécute une autre tâche chronologique qui se connecte au serveur frontal et envoie de nouvelles données au serveur frontal.
- Quantité minimale de services en cours d'exécution
- Seul SSH/SCP de votre adresse IP, le pare-feu étanche. Bloquer si les connexions excédaient X/min etc. car elles ne feraient qu'une insertion occasionnelle.
- NO FTP, etc.
B) Serveur avant
reçoit les données du serveur travailleur, utilise jamais les mots de passe lui-même. Le seul moyen de contacter le serveur de travail est l'API mentionnée ci-dessus, uniquement pour les nouvelles informations utilisateur. Le problème avec tout faire sur le même serveur, si vous êtes piraté le pirate peut s'asseoir et renifler toutes les données entrantes/mots de passe etc. .. même si elles sont stocké/chiffré/décrypté en toute sécurité, avec un peu de patience il les reniflerait tous. Lorsque l'application est lancée pour la première fois, elle génère une clé aléatoire.
La partie intéressante est à la toute fin: "CryptProtectData, qui est une fonction Windows API pour le cryptage des données. [...] Elle ne peut être décryptée que sur la même machine et par le même utilisateur ..." Dites-nous comment le chiffrement fonctionne, ou quelles sont les alternatives pour d'autres plates-formes, donc je ne suis pas sûr que ce soit directement applicable. –