#19, 2007 :: Путь к оптимизации MySQL

Page 49

PHP Inside'19 >> Идеи >> Шифрование в PHP для обычных людей Не отчаивайтесь. Схемы одностороннего шифрования и crypt() в частности, являются очень популярными способами защиты информации. Если вы потеряете список пользовательских паролей, то практически исключена ситуация их использования злоумышленниками. Давайте вернемся к примеру с паролями. Зачастую, в РНР-приложениях существуют модули, которые позволяют системным администраторам создавать, редактировать и удалять пользователей. Перед тем как сохранить данные пользователя в таблицу базы, пароль желательно зашифровать, к примеру, функцией crypt(). <?php $user = strip_tags(substr($_POST['user'],0,32)); $pw = strip_tags(substr($_POST['password'],0,32)); $cleanpw = crypt($pw); $sql = "insert into users (username,password) values('".mysql_real_escape_string($user)."', '".mysql_real_escape_string($cleanpw)."')"; //.....etc.... ?> Crypt() получает в качестве первого аргумента строку «плоского» текста а также «соль», значение влияющее на механизм случайных чисел в алгоритме шифрования и генерирует односторонний шифрованный текст (хеш). Если вы не передадите второй аргумент, то PHP возьмет за основу значение по умолчанию, которое может быть одним из следующих: •

CRYPT_STD_DES – Стандартное DES-шифрование с двузначной «солью».

CRYPT_EXT_DES – Расширенное DES-шифрование с девятизначной «солью».

CRYPT_MD5 - MD5 шифрование с двенадцатизначной «солью», начинающейся с $1$

CRYPT_BLOWFISH - Blowfish начинающейся с $2$ или $2a$.

шифрование

с

шестнадцатизначной

«солью»,

Многие современные инсталляции PHP используют соль с MD5 и выше, состоящую из 12 символов, но это не всегда так. Вы можете проверить настройки своего сервера небольшой строчкой кода: <?php echo "System salt size: ". CRYPT_SALT_LENGTH; ?> В ответ можно получить значения 2, 9, 12 и 16 по которым и следует определять используемый по умолчанию алгоритм. Одновременно с crypt() иногда стоит применять и функцию md5() для зашифровки плоского текста и передачи его в crypt() в качестве «случайной» соли (см. листинг ниже). Функция md5() преобразует передаваемую ей строку в хэш длинной 32 символа. Впрочем, вы можете применять и любой другой метод по вашему вкусу и в соответствие с установленной политикой безопасности. <?php $user = strip_tags(substr($_POST['user'],0,32)); $pw = strip_tags(substr($_POST['password'],0,32)); $cleanpw = crypt(md5($pw),md5($user)); $sql = "insert into users (username,password) 5


Issuu converts static files into: digital portfolios, online yearbooks, online catalogs, digital photo albums and more. Sign up and create your flipbook.