SSL/SSH защищает данные, которыми обмениваются клиент и сервер, но
не защищают сами данные, хранимые в базе данных.
SSL - протокол шифрования на уровне сеанса передачи данных.
В случае, если взломщик получил непосредственный доступ к БД (в обход веб-сервера),
он может извлечь интересующие данные или нарушить их целостность, поскольку
информация не защищена на уровне самой БД. Шифрование данных -
хороший способ предотвратить такую ситуацию, но лишь незначительное количество БД
предоставляют такую возможность.
Наиболее простое решение этой проблемы - установить вначале обыкновенный
программный пакет для шифрования данных, а затем использовать его в ваших
скриптах. PHP, в таком случае, может помочь вам в работе с такими расширениями
как Mcrypt и Mhash, реализующими различные алгоритмы криптования.
При таком подходе скрипт вначале шифрует сохраняемые данные, а затем дешифрует их при запросе.
Ниже приведены примеры того, как работает шифрование данных в PHP-скриптах.
В случае работы со скрытыми служебными данными их нешифрованное представление
не требуется (т.е. не отображается), и, как следствие, можно использовать
хеширование. Хорошо известный пример хэширования - хранение
MD5-хеша от пароля в БД, вместо хранения оригинального значения.
Более детальная информация доступна в описании функций
crypt() and md5().
Пример 27-1. Использование хешированных паролей
<?php // сохранение хешированного пароля $query = sprintf("INSERT INTO users(name,pwd) VALUES('%s','%s');", addslashes($username), md5($password)); $result = pg_exec($connection, $query);
// проверка введенного пользователем логина и пароля на корректность $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 "Welcome, $username!"; } else { echo "Authentication failed for $username."; } ?>
|
|