Вчера был приятно удивлен получив письмо от достаточно серьезной Латвийской организации.
Письмо было из множество приятных слов в адрес Einplac CMS.
И с достаточно на мой взгляд необычной просьбой, улучшить шифрование пароля (хеша) и еще больше ужесточить вход в админку.
В новой 2.3 версии Einplac уделил этому большее внимание.
Спешу сообщить что все старые версии так же используют шифрование пароля.
Код:md5('пароль');
Тоесть открыв ваш файлик password.php, или открыв cookie, вместо вашего пароля вы увидите закодированную строчку. Например вот так выглядит зашифрованный пароль: admin:
Код:<?php $password="21232f297a57a5a743894a0e4a801fc3"; ?>
Тоесть узнать что у вас здесь за пароль очень сложно. При условие что вы не используете что-то очень простое.
В новой версии Einplac шифрование происходит не 1 раз как в предыдущих а 3 раза и еще с подсовыванием дополнительного текста
Код:md5(md5($salt).md5('пароль'));
Подобный способ насколько я помню использует IPB 2.*
Тоесть эта строчка шифрует пароль, потом берет случайный текст, который так же шифрует. И потом наш зашифрованный пароль и случайный зашифрованный текст соединяет вместе и еще раз шифрует. Что усложняет в сотни раз подбор пароля.
Для перехода c v2.2 на v2.3 необходимо обновить index.php так же рекомендуется обновить локализации (/files/lang.php) - если они установлены. Если вы хотите использовать новый принцип шифрования пароля. Вам необходимо переписать пароль. Когда авторизуетесь нажмите "Change your password?" (Изменить пароль?) далее в верхней ячейки напишите свой пароль и в нижней так же еще раз свой пароль. После чего пароль сгенерируется по новому принципу.
Да о этом случайном тексте в пароле. В веру файлика index.php вашей Einplac CMS появилась новая переменная
Код:$salt = '4rGe35ktY';
в ней и есть этот случайный текст. Если вы хотите еще усложнить работу злоумышленникам измените 4rGe35ktY на что-то другое. Пишите там цифры, буквы - как маленькие так и большие. Будет здорава если это поле будет содержать от 5 до 10 символов.
ВАЖНО: Измените эти символы перед тем как вы обновите или измените пароль. Иначе вам не получится в дальнейшем пройти авторизацию. В таком случае вам нужно будет удалить файл password.php, после чего пароль сбросится на стандартный admin и тогда измените его на ваш новый.
Так же в 2.3 версии в index.php появилась переменная
Код:$range_ip = 'all'; // Allow IP: 'all' or IP or IP1,IP2,IP3
Здесь вы можете вместо all указать 1 или несколько IP (через запятую без пробелов) которые смогут зайти в админку, всем другим доступ будет запрещен даже если они знают пароль. Если указано all авторизоваться могут любые IP адреса (которые знают пароль).
Изменено: Еще что касается этих (хешей) принципов шифрования пароля. Вам не обязательно менять пароль. Вы можете его оставить в старом зашифрованном виде. Это тоже безопасно. К тому же злоумышленник сбит с толку, он не знает по какому принципу расшифровывать пароль, или по новому или по старому.
Авторизация происходит так
Код: if (((md5(md5($salt).md5(POST('password'))) == $password) or (md5(POST('password')) == $password)) and (in_array($ip_user,explode(',',$range_ip)))){
Тоесть, мы принятый пароль от человека который пытается авторизоваться шифруем новым способом. И сравниваем, если наш зашифрованный пароль и его не одинаковы, то пробуем шифровать пароль старым способом, и опять сравниваем если они так же не одинаковы то не пропускаем его.