Comment puis-je stocker des données sensibles en toute sécurité dans une base de données MySQL?
J'ai fais une demande d'emploi d'une entreprise, je travaille pour. J'ai réussi à le protéger contre les injections SQL et certains XSS techniques. Mon principal problème est de conserver les informations sensibles sécurisées, comme le SSN et l'adresse, parce que les besoins de l'entreprise que de faire 1099 formulaires pour les vendeurs de taxes.
Je ne sais pas comment faire pour faire de cette partie, mais dois-je tout chiffrer et décrypter puis lorsqu'il arrive dans la base de données MySQL?
Si vous voulez en sécurité, il doit être crypté dans la base de données MySQL, et pas seulement pendant le transit.
Si elle peut être déchiffré par vous, il peut généralement être déchiffrées que par quelqu'un qui a accès à votre base de données. Peut-être vous avez besoin d'embaucher un professionnel?
C'est un bien vaste question, Jacob. Pouvez-vous vous concentrer un peu plus? Si vous êtes plus intéressé dans de bout en bout le cryptage (pourquoi? afin d'assurer la confidentialité? Afin que vos utilisateurs la confiance qu'ils envoient les données à droite de l'entité?), puis de prendre les autres bits. Quelle est votre expérience dans ce domaine? Si c'est peu à néant, alors permettez-moi humblement que vous faites un peu de lecture hors ligne - toute aide qui peut s'adapter à une SORTE de réponse n'aidera pas beaucoup. Le OWASP est un bon endroit pour commencer.
L'injection SQL et XSS hs pour être pris en charge à partir de l'application .
Pour plus d'informations, venez et regardez security.stackexchange.com - nous couvrons beaucoup de ce genre de chose 🙂
Si elle peut être déchiffré par vous, il peut généralement être déchiffrées que par quelqu'un qui a accès à votre base de données. Peut-être vous avez besoin d'embaucher un professionnel?
C'est un bien vaste question, Jacob. Pouvez-vous vous concentrer un peu plus? Si vous êtes plus intéressé dans de bout en bout le cryptage (pourquoi? afin d'assurer la confidentialité? Afin que vos utilisateurs la confiance qu'ils envoient les données à droite de l'entité?), puis de prendre les autres bits. Quelle est votre expérience dans ce domaine? Si c'est peu à néant, alors permettez-moi humblement que vous faites un peu de lecture hors ligne - toute aide qui peut s'adapter à une SORTE de réponse n'aidera pas beaucoup. Le OWASP est un bon endroit pour commencer.
L'injection SQL et XSS hs pour être pris en charge à partir de l'application .
Pour plus d'informations, venez et regardez security.stackexchange.com - nous couvrons beaucoup de ce genre de chose 🙂
OriginalL'auteur Jacob Cannon | 2013-02-25
Vous devez vous connecter pour publier un commentaire.
C'est trop simplifié de réponse et doit être pris avec un grain de sel, comme la plupart des réponses à propos de la sécurité:
Utiliser SSL partout.
Utiliser une clé de chiffrement sécurisée
Pour le stockage de données chiffrées, vous pouvez utiliser un
BLOB
champ, et l'utilisation de MySQL construit dans les fonctions de chiffrement des. Exemple:Si vous préférez faire le chiffrement/déchiffrement dans le code de l'application, prendre un coup d'oeil à PHP Mcrypt fonctions.
Ce n'est pas un guide complet, mais c'est un début et mieux que de ne rien faire.
Vous pouvez être en mesure d'en apprendre plus sur https://security.stackexchange.com/
Vous devriez avoir expliqué le chiffrement mieux, il est vraiment important et en tant que développeurs, il est de notre devoir de nous assurer de faire de la sécurité. Découvrez this réponse à une question, il a un très bon guide pour le chiffrement.
Il est préférable de ne pas utiliser mcrypt, il est abandonware, n'a pas été mis à jour depuis des années et ne prend pas en charge la norme PKCS#7 (née PKCS#5) rembourrage, seul non-standard null rembourrage qui ne peut même pas être utilisé avec des données binaires. mcrypt avait beaucoup de circulation bugs datant de 2003. Au lieu de considérer l'utilisation de désamorcer, elle est maintenue et est correcte.
Vous ne devriez pas en fait, garde avec votre vie, c'est juste des ordinateurs. 😉
OriginalL'auteur Wesley Murch
Requête SQL avec la clé (comme Wesley Murch suggère) n'est pas une bonne idée.
Si vous n':
... et la requête est connecté (slowlog pour inst.) votre clé secrète est capturé en texte brut, ce qui ne devrait jamais se produire. Une telle requête avec la clé secrète serait également visible lorsque vous exécutez une requête comme
SHOW PROCESSLIST
.Problème suivant où stocker la clé de cryptage? Dans le fichier PHP? Il est de nouveau en texte brut.
Chiffrer les données:
Utilisation privée/clé publique de chiffrement (http://en.wikipedia.org/wiki/Public-key_cryptography). PHP dispose d'une assez bonne technique.
Si vous voulez en savoir plus, vous pouvez google "contrôlé par l'utilisateur de chiffrement" ou "zero knowledge" confidentialité".
SQL insert /XSS:
La meilleure protection est sécurisé app. Sans aucun doute. Si vous voulez vous assurer, que vous pouvez utiliser pour inst PHP ID pour détecter les attaques:
https://github.com/PHPIDS/PHPIDS
J'ai une assez bonne expérience.
OriginalL'auteur Martin Höger
Comme implicite dans les commentaires, vous poser une question énorme. Vous allez avoir besoin de faire des recherches un certain nombre de questions distinctes:
Il serait difficile de les prendre toutes en une seule réponse. Je suggère d'effectuer quelques recherches sur ce site pour les sujets mentionnés ci-dessus.
OriginalL'auteur JakeParis