Mod�le de stockage avec chiffrement

Les protocoles SSL/SSH prot�gent les donn�es qui circulent entre le serveur et le client, mais SSL/SSH ne prot�ge pas les donn�es une fois dans la base. SSL est un protocole en ligne.

Une fois que le pirate a obtenu l'acc�s direct � votre base de donn�es (en contournant le serveur web), les donn�es sensibles, stock�es dans votre base sont accessibles directement, � moins que les donn�es de la base ne soient prot�g�es par la base. Chiffrer les donn�es est une bonne solution pour r�duire cette menace, mais tr�s peu de bases de donn�es offrent ce type de chiffrement.

Le moyen le plus simple pour contourner ce probl�me est de cr�er votre propre logiciel de chiffrement, et de l'utiliser dans vos scripts PHP. PHP peut vous aider dans cette t�che gr�ce aux nombreuses extensions dont il dispose, comme Mcrypt et Mhash, qui connaissent un large �ventail de m�thodes de chiffrement. Le script PHP va chiffrer les donn�es qui seront stock�es, et les d�chiffrer lorsqu'elles seront relues. Voyez la suite pour des exemples d'utilisation de ce chiffrement.

Dans le cas de donn�es vraiment sensibles, si la repr�sentation originale n'est pas n�cessaire (pour affichage, ou comparaison), utiliser un hash est une bonne solution. L'exemple classique est le stockage de mots de passe dans les bases de donn�es, apr�s les avoir pass�s au MD5. Voyez les fonctions crypt() et md5().

Exemple #1 Utiliser un mot de passe et MD5

<?php
// Stockage du mot de passe hash�
$query  sprintf("INSERT INTO users(name,pwd) VALUES('%s','%s');",
             
pg_escape_string($username), md5($password));
$result pg_query($connection$query);

// interroger le serveur pour comparer le mot de passe soumis
$query sprintf("SELECT 1 FROM users WHERE name='%s' AND pwd='%s';",
             
pg_escape_string($username), md5($password));
$result pg_query($connection$query);

if (
pg_num_rows($result) > 0) {
    echo 
"Bienvenue, $username!";
} else {
    echo 
"Identification �chou�e pour $username.";
}
?>