5.1.5 Sécurité des bases de données
5.1 Sécurité
5 Sécurité
Manuel PHP
. Schéma de base de données . Connexions au serveur de base de données ->Modèle de stockage avec chiffrement . Injection SQL
|
5.1.5.3 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ègent 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 peut 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 par exemple
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 losrqu'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é au
MD5. Voyez les fonctions
crypt
et
md5
.
Utiliser un mot de passe et MD5 |
// Stockage du mot de passe hashé $query = sprintf("INSERT INTO users(name,pwd) VALUES('%s','%s');", addslashes($username), md5($password)); $result = pg_exec($connection, $query);
// interroger le serveur pour comparer le mot de passe soumis $query = sprintf("SELECT 1 FROM users WHERE name='%s' AND pwd='%s';", addslashes($username), md5($password)); $result = pg_exec($connection, $query);
if (pg_numrows($result) > 0) { echo "Bienvenue, $username!"; } else { echo "Identification échouée pour $username."; }
|
|