2011-04-09 5 views
3

J'ai cherché plusieurs fois mais je n'ai trouvé que des réponses peu claires à ce sujet.Comment protéger les données sensibles dans MySQL?

Je développe une application Web qui stocke des informations sensibles (textes de taille moyenne), et le site lui-même est hébergé sur un hébergeur sécurisé. Mais je me demande quel est le meilleur moyen de stocker ces parties de texte sensibles dans MySQL sans se soucier d'accès indésirable à la base de données (comme de phpMyAdmin) et de pouvoir effectuer des actions sur ces informations pour le compte de l'utilisateur lui-même et créer des pdfs).

Merci et désolé pour mon anglais.

+2

votre anglais était parfaitement bien. – dugas

+2

D'accord avec @thedugas - J'ai vu l'anglais bien pire des locuteurs natifs. – ceejayoz

+0

@thehudgas @ceejayoz Merci. Je vous en suis reconnaissant. :) – Sallar

Répondre

5

Si vous ne contrôlez pas vos serveurs, vous n'avez aucune sécurité.

  1. Contrôlez vos serveurs.
  2. Utilisez le modèle de sécurité mysql pour limiter qui peut regarder les données avec phpmyadmin ou autre.

Si ce n'est pas assez bon, vous pouvez penser au cryptage. Cependant, vous deviez stocker les clés quelque part, et maintenant vous êtes de retour où vous avez commencé avec les mots de passe mysql.

+0

Quel type de cryptage suggérez-vous? – Sallar

3

Une option consiste à utiliser le cryptage intégré de MySQL, voir Encryption and Compression Functions. L'autre option majeure est d'utiliser des champs binaires et de faire le cryptage dans votre application, avec AES par exemple.

Si vous stockez la clé sur le serveur, toute personne ayant accès au serveur et à la base de données peut déchiffrer les données. Si c'est aussi un problème, vous devrez considérer comment obtenir la clé de l'utilisateur. Cela peut être difficile à faire d'une manière à la fois sécurisée et pratique.

+0

Notez que cela rendra les index inutiles sur les colonnes cryptées. Quelque chose d'un compromis. – ceejayoz

+0

Que faire si je veux que mes données soient consultables? – Sallar

+1

Je recommande d'utiliser [Lucene] (http://lucene.apache.org/java/docs/) ou [Solr] (http://lucene.apache.org/solr/) pour une recherche en texte intégral, même si vous ne cryptez pas les données. Le problème ici est que si cet index n'est pas crypté, les données pourraient être reconstruites à partir de cela.On dirait que vous voulez probablement contrôler complètement vos serveurs, comme le suggère bmargulies. Vous pourriez envisager un VPS comme [linode] (http://www.linode.com/?r=8e44b5c078453aa590239fbe056dfe028c5b4395) ou [slicehost] (http://www.slicehost.com/). – WhiteFang34

1

Vous pouvez chiffrer les champs de base de données en utilisant encode mysql/décoder

1

Vous devriez verrouiller vos comptes d'utilisateurs MySQL. Envisagez de limiter ce que votre webapp peut faire elle-même. Ne lui donnez que le minimum d'autorisations nécessaires sur votre base de données et envisagez de créer des procédures stockées pour vous assurer qu'il ne peut accéder qu'à ce dont il a besoin et rien d'autre.

Si vous ne faites pas confiance à votre fournisseur d'hébergement, vous devez déplacer au moins la base de données vers un endroit fiable. Cela signifie que vous devez vous assurer que votre connexion à votre base de données est sécurisée (SSL).

Vous devriez crypter vos données. Ne soyez pas tenté de faire votre propre chiffrement, comme le dit @ WhiteFang34, utilisez le cryptage intégré.

+0

Je suis inquiet au sujet des hackers surtout pas des utilisateurs normaux. – Sallar

2

Il existe un système nommé Cryptdb conçu par MIT. Cryptdb peut chiffrer les données en fonction du mot de passe du propriétaire des données et personne, même les administrateurs, n'a pas pu accéder aux données réelles. L'équipe dit que les frais généraux pour phpBB est de 14%!

+0

Grubbs (2017): Pourquoi votre base de données chiffrée n'est pas sécurisée: https://eprint.iacr.org/2017/468.pdf – asmaier

Questions connexes