Intereting Posts
Остановить wordpress от добавления тегов html, но не удалить мои собственные теги? Представление формы на лицевой стороне в коротком коде Получать пользовательские поля типа сообщения в цикле while как переменные Почему я должен указать все параметры для wp_enqueue_script для загрузки моего jquery в нижнем колонтитуле? Перевод виджета на моем плагине Как распечатать высушенный sql сразу после его выполнения Скрыть / Показать только определенные категории в wp-admin new-post.php Боковая панель на single.php не появляется Как вызвать миниатюру с помощью aqua resizer в лучшей практике. Укажите уведомление размеров изображения от GTmetrix динамически генерирующий синтаксис плагина Получение заметки с изображением для показа только если заполнено Пользовательский тип страницы – шаблон под атрибутами страницы? Код не зацикливается на всех продуктах данной категории Стратегия конфигурации для большого количества одновременных редакторов Загрузка определенных изображений в определенную папку

импорт пользователей, где пароль предоставляется как md5 + много метаданных

У меня есть электронная таблица, которая была предоставлена ​​мне пользователям для импорта на новый сайт, который я создал. Мне был предоставлен пароль в хэш-форме MD5. Я подозреваю, что если я вставляю это в поле пароля в базе данных, так как это MD5, он все равно будет соответствовать их паролю, когда пользователь попытается войти в систему в новой системе. Это правильное предположение?

У меня также есть большое количество метаданных для каждого пользователя, который нужно вставить.

Поскольку я хочу вставить строку md5, а не текст пароля и дополнительные пользовательские мета-поля, я не думаю, что могу использовать wp_insert_user.

Есть ли у кого-нибудь опыт в этом? Я думаю, что я просто сделаю что-то прямо в mysql, вместо того, чтобы взломать плагин WP, любые предложения были бы оценены.

Solutions Collecting From Web of "импорт пользователей, где пароль предоставляется как md5 + много метаданных"

WordPress использовал MD5 для хэша паролей в прошлом, но с тех пор перешел на более безопасный phpass. Хорошо, что он сохраняет обратную совместимость – если у пользователя был старый хеш MD5, тогда он будет проверяться как таковой и автоматически повторно хеширован и повторно сохранен с использованием текущего алгоритма, см. wp_check_password() .

Вы правы, что вы не можете использовать wp_insert_user() потому что он ожидает пароль обычного текста.

Я подозреваю, что если я вставляю это в поле пароля в базе данных, так как это MD5, он все равно будет соответствовать их паролю, когда пользователь попытается войти в систему в новой системе. Это правильное предположение?

Проверьте исходный код вашей версии WordPress FIRST, чтобы убедиться в этом. Возможно, это не поведение по умолчанию. Поэтому проверьте источник и сделайте быстрый взлом вашей установки (поставьте его под GIT , так что у вас есть UNDO при редактировании ядра (это быстро, и вы начинаете с git init ). Это не убьет ни одного котенка, а увеличит ваш рабочий процесс BTW) ,

Поэтому после того, как вы устранили проблему входа в систему (решение: добавьте проверку на хеш- файл MD5, если они совпадают, регенерировать хэш пароля с помощью phpass ), вы можете подумать о проблеме с метаданными.

Мой ответ не очень сильно затрагивает его. Я имею в виду, просто как-нибудь добавить данные, это должно быть тривиально. Просто добавьте его. Если данные несовместимы с вашим сайтом, вам может потребоваться сначала расширить свой сайт, поэтому, независимо от того, в чем дело, я уверен, что вы его управляете.

Совет. Вставьте непосредственно в базу данных. Просто выполните запрос MySQL, который выполняет эту работу. Не шевелясь слишком много с PHP WordPress. WordPress знает только базу данных MySQL для хранения данных. Поэтому, если вы контролируете данные, вы управляете wordpress;).

У меня тоже была эта проблема. Я решил его решить, импортировав пароли MD5 в виде открытого текста, а затем изменив аутентификацию WordPress, чтобы поместить пароли через хэш MD5, прежде чем проверять их.

Мой конкретный подход:

  1. Я использовал плагин для импорта пользователей из CSV, который включал их MD5-ed пароль. Это оставило мне базу данных, полную пользователей, которые не могли войти в систему, потому что их пароль открытого текста теперь был «5f4dcc3b5aa765d61d8327deb882cf99» вместо «password».

  2. Затем я написал подключаемый модуль, включающий крошечные изменения в wp_hash_password () и wp_check_password (), чтобы вызвать хеширование MD5 на первом этапе всех проверок пароля. Поэтому, когда они вводят «пароль», WordPress проверяет вместо «5f4dcc3b5aa765d61d8327deb882cf99», и поэтому проверка подлинности завершается успешно. Я по-прежнему получаю одно и то же шифрование phpass, единственное различие заключается в том, что я никогда не даю ему незашифрованного открытого текста для шифрования.

Это было выполнено путем копирования и вставки этих функций из pluggable.php в новый подключаемый модуль и изменения их для переноса предоставленных открытых текстовых паролей в md5 ().

Каждая функция имела только одно изменение от первоначальной реализации; эта строка из функции wp_hash_password ():

 return $wp_hasher->HashPassword( trim( $password ) ); 

чтобы:

 return $wp_hasher->HashPassword( md5 ( trim( $password ) ) ); 

и эта строка из функции wp_check_password ():

 $check = $wp_hasher->CheckPassword($password, $hash); 

чтобы:

 $check = $wp_hasher->CheckPassword(md5($password), $hash); 

При таком подходе пользователи получают прозрачные пароли и вместо того, чтобы скомпрометировать безопасность, мы используем еще более безопасную версию готовой схемы проверки подлинности.

@Rarst Вы правы, что вы не можете использовать wp_insert_user () в своей первоначальной форме для вставки уже хэшированных паролей, но, изменив эту строку:

$user_pass = wp_hash_password( $userdata['user_pass'] );

чтобы:

$user_pass = $userdata['user_pass']; вы сможете вставлять хешированные пароли md5.

По modyfing wp_insert_user () можно использовать wp_create_user( $username, $password, $email ); для добавления новых пользователей. Не забывайте отменять изменения в wp_insert_user (), когда вы закончите!