Intereting Posts
Отключить автоматическое сохранение и публикацию изменений внутри темы или плагина Как показать аватар пользователя в панели уведомлений buddypress в верхнем меню? Запуск WordPress как пользователя FTP? Как я могу просмотреть список всех страниц, которые создал сайт WordPress? Отображение терминов по первой букве Автоматическое добавление настраиваемого поля (add_post_meta) со значением, основанным на количестве слов статьи Должны ли данные, отличные от WordPress, получить собственную БД? Как узнать, что «Максимальное количество страниц блога» установлено в Могу ли я создавать простые всплывающие подсказки в WordPress? Экспорт и импорт медиатекстов и галерей WordPress Может ли плагин по-прежнему влиять на сайт даже после удаления? $ wpdb-> вставить Ошибка базы данных Дублировать запись журнала входа Использование esc_url () на URL-адресе более одного раза Правила перезаписи уходят Изменение категории должности из выпадающего меню

Безопасны ли соли по умолчанию?

При установке нового WordPress одна из вещей, которую нужно сделать, это обновление солей в wp-config.php .

Раздел выглядит так

 define('AUTH_KEY', 'put your unique phrase here'); define('SECURE_AUTH_KEY', 'put your unique phrase here'); define('LOGGED_IN_KEY', 'put your unique phrase here'); define('NONCE_KEY', 'put your unique phrase here'); define('AUTH_SALT', 'put your unique phrase here'); define('SECURE_AUTH_SALT', 'put your unique phrase here'); define('LOGGED_IN_SALT', 'put your unique phrase here'); define('NONCE_SALT', 'put your unique phrase here'); 

Если клиент изменяет эти соли или константы отсутствуют, WordPress будет сохранять эти значения внутри базы данных.

Для генерирования солей используется wp_generate_password(64, true, true) . Код, выполняющий это, можно найти в подключаемом из строки 1993.

Теперь вопрос:

  • Является wp_generate_password же безопасным, как и соли, созданные по рекомендованному https://api.wordpress.org/secret-key/1.1/salt/

  • Есть ли понижение в безопасности при наличии солей в базе данных, так как этот метод возвращается к этому.

  • Имеются ли какие-либо последствия для безопасности, чтобы не устанавливать значения и позволять им произвольно генерироваться на лету в db?

  1. Является ли wp_generate_password() безопаснее, чем соли, созданные по рекомендованному https://api.wordpress.org/secret-key/1.1/salt/ ?

На эти детали нельзя ответить по понятным причинам, внутренности неизвестны публике. Если бы мы могли ответить на этот вопрос, то были бы известны детали, которые позволят провести обратное проектирование процесса. Это может привести к снижению безопасности. Обратите внимание, что кто-то еще может попытаться установить gazillion запросов на этот Url, а затем попытаться перестроить процесс, чтобы посмотреть, какие пузырьки на поверхности.

  1. Есть ли понижение в безопасности при наличии солей в базе данных, так как этот метод возвращается к этому?

Да. Вы не хотите, чтобы данные безопасности / учетные данные были сохранены в любом месте, где они могли бы быть доступны другим пользователям. Это включает:

  • Контроль версий
  • История командной строки
  • Резервное копирование базы данных или файлов

Либо сохраняйте свои учетные данные и связанные с ними данные (например, «соль») в .env файлах (см. Пакет Dotenv ), в секретном безопасном убежище служб развертывания в отдельных файлах конфигурации (например, файл учетных данных AWS) и, следовательно, только в одно место.

  1. Имеются ли какие-либо последствия для безопасности, чтобы не устанавливать значения и позволять им произвольно генерироваться на лету в db ?

Да. Поскольку константы auth также используются в Cookies, вы лишаете права пользователей регистрироваться в сеансах , недействительными для пользователей Cookies. Это константы по какой-то причине: они должны придерживаться и не меняться по запросу.

Изменить: поскольку @gmazzap указал мне на это, я не говорил о значениях, сохраненных в базе данных, а о константах «сгенерированный на лету» . Если вы сохраните его в базе данных, обратитесь к пункту 2, касающемуся безопасности.

Для дальнейших дополнений, пожалуйста, перейдите по ссылке от @Mark Kaplun и прочитайте ответ @gmazzap в деталях (и увеличьте оба).

Дополнительная заметка / напоминание: всегда добавляйте некоторые собственные псевдослучайные символы к полученным данным с серверов API. И никогда не отдавайте свои учетные данные или свою базу данных из рук. Вы не поверите, что люди склонны отправлять по электронной почте, сохранять на usb-sticks, свои частные учетные записи Dropbox или на жестких дисках на ноутбуках без пароля …

Изменить: Как отметил @stephenharris в [чате], в этой теме есть интересное сообщение в блоге, которое представлено гораздо более подробно, чем наши ответы здесь.

Is wp_generate_password() безопаснее, чем соли, созданные по рекомендованному https://api.wordpress.org/secret-key/1.1/salt/

Поскольку @kaiser сказал, что внутренние детали генерации солей API неизвестны, но, как известно, API возвращает строку с 64 символами, где каждый символ является одним из 92 возможных глифов, используемых wp_generate_password() .

Обратите внимание: если на сервере есть PHP 7, случайные целые числа, используемые для выбора одного из 92 глифов, генерируются с использованием PHP 7 CSPRNG, и я сомневаюсь, что у API будет что-то более сильное. В старых версиях PHP случайные значения предоставляются mt_rand .

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

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

Для этого я согласен с @kaiser .

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

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

Более того, зная используемую соль, идентификаторы пользователей и метаданные пользователей (где хранятся токены сеанса), очень легко воспроизводить значения nonce для любого из пользователей без необходимости знать «расшифрованный» пароль.

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

Имеются ли какие-либо последствия для безопасности, чтобы не устанавливать значения и позволять им произвольно генерироваться на лету в db?

Если соли вообще не установлены, они генерируются с помощью wp_generate_password() только в первый раз, когда WP пытается получить к ним доступ, затем сохраняются в базе данных и последующих запросах, они оттягиваются оттуда.

Как упоминалось ранее, соли, созданные wp_generate_password() , не являются плохими сами по себе, но поскольку они хранятся в db, последствия secutity – это то, что сказано в предыдущем пункте: если у кого-то есть доступ к копии вашего db, более опасно, если что копия db содержит соли.

Однако реальные последствия для безопасности – это когда для солей используются небезопасные значения. Фактически, если в конфигурации установлены слабые значения, WP не будет генерировать какое-либо значение, но будет использовать эти слабые значения. Короче говоря, если выбор между солями в конфигурации и слабыми солями, первый, безусловно, лучше.

Обратите внимание, что в последних версиях WP (не уверен, с какой именно версии) значение по умолчанию 'put your unique phrase here' игнорируется, поэтому, если wp-config.php содержит это значение для любой соли, WordPress игнорирует его и использует значение созданный с помощью wp_generate_password() который лучше, чем слабое значение, но хуже, чем сильное значение, хранящееся в config (поскольку хранение солей в db …). Автоматически сгенерированные значения используются даже в том случае, если одно и то же значение соли используется более чем один раз.

Заметки

  • Изменение солей приведет к выходу из системы любого пользователя, зарегистрированного на вашем сайте до изменения, включая тех пользователей, которые не вошли в систему в момент изменения, но которые выбрали опцию «запомнить меня» при входе в систему до изменения.

  • Когда WordPress устанавливается с помощью «установщика» (без ручного создания wp-config.php ) значения солей генерируются, вытягивая значения из API.

  1. Это зависит от случайности, которая может быть достигнута на вашей машине. Я не повторяю точные детали, но API wordpress.org существует, если случайность вашей машины недостаточно хороша.

  2. Возможно нет. Если у кого-то есть такой доступ к вашей БД или коду, то вы тост в любом случае, и получение солей – это наименее важная проблема, с которой вы сталкиваетесь.

  3. Что было бы причиной для этого? получение этих 8 значений из БД заставит каждую страницу обслуживаться очень медленно, не добавляя никакой ценности в вашу безопасность.

Изменить: почему случайность (энтропия) имеет значение

во-первых, возможно, это https://security.stackexchange.com/questions/61676/why-do-wordpress-installations-retrieve-the-crypt-secrets-remotely-on-installat будет объяснять это лучше, чем меня

Проблема заключается в том, что соли не следует угадывать, поэтому они генерируются путем ретрансляции на каком-то генераторе случайных чисел, который имеет большинство ОС. Но не все случайные генераторы создаются равными, и если, например, ваш генератор не принимает в качестве входных данных некоторые значения из среды, он будет генерировать одну и ту же последовательность чисел, и поэтому любой, кто проверяет поведение ОС, может придумать первый 1000, которые будут сгенерированы, использовать их в качестве солей и легче угадать ваш пароль.

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

примечание: это причина, по которой смартфон и другое программное обеспечение запрашивают у вас случайный ввод при инициализации устройств / программного обеспечения. Этот случайный ввод служит базой для генерации случайных чисел и гарантирует, что каждое устройство будет генерировать другую последовательность чисел.

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

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