Informations générales:
Je fais partie d'une équipe de développeurs qui exécute une application Web qui stocke et récupère les données HIPAA (médicales). Récemment, les directives HIPAA ont été mises à jour pour inclure une politique qui exige que toutes les informations d'identification du client soient cryptées lorsqu'elles sont "au repos" (stockées dans la base de données et inaccessibles).Surcharger une fonction PHP native pour crypter les données pour la conformité HIPAA
Le problème initial
Le premier problème que nous devions attaquer était de déterminer la meilleure façon de les deux sens Crypter les données d'une manière qui rend les données sécurisées en cas de violation.
La solution initiale
La solution la plus rapide, nous sommes arrivés avec était d'utiliser mcrypt pour chiffrer les données avant nous a inséré dans la base de données.
Le nouveau problème
L'application que nous développons est assez vieux (comme les applications web vont) et utilise beaucoup de programmation procédurale ainsi que la forte dépendance de la fonction mysql_query pour insérer, mettre à jour, récupérer et Suprimmer les données. Nous n'avons pas le temps ou le luxe de traduire notre code dans une couche d'abstraction de base de données. Ainsi, la seule façon de mettre en œuvre ce système de chiffrement/déchiffrement consiste à éditer manuellement toutes les requêtes CRUD pour utiliser les données qui ont été chiffrées via mcrypt. C'est très inefficace et extrêmement sujet aux erreurs.
Notre solution proposée
Nous avons décidé que le plus rapide et le plus efficace pour résoudre notre problème est de remplacer la fonction mysql_query native avec l'un de nos propre conception. Dans notre nouvelle fonction, nous chiffrerions/déchiffrerions les valeurs de données avant d'envoyer la requête au serveur/de renvoyer le jeu de résultats.
où vous Folks Come In
- Est-ce la meilleure solution pour résoudre notre problème initial?
- Comment allez-vous écraser une fonction PHP existante?
Le problème est de chiffrer les données alors qu'il a été transféré au serveur DB? Ou stocker dans un cryptage? –
Pour le stocker de manière cryptée, puis le récupérer, le déchiffrer et l'afficher au besoin. –
Je pense que vous pouvez faire cela à la mauvaise couche. Avez-vous envisagé de chiffrer toute la base de données MySQL? Quelques solutions pour cela sont discutées dans [cette question] (http://stackoverflow.com/questions/143750/mysql-and-data-file-encryption). –