Обновление метода шифрования паролей

Привет @everyone

Мне необходимо внедрить изменения на уровне кода и базы данных в моём приложении Discourse на Ruby on Rails, чтобы соответствовать моим конкретным требованиям.

Обновить метод шифрования паролей. В настоящее время Discourse использует «PBKDF2» для шифрования паролей.
В соответствии с моими требованиями мне нужно переключиться на «MD5» вместо «PBKDF2».

Я настроил код в своей локальной среде, а также развернул Discourse в производственной среде с помощью Docker.

Когда я обновляю локальный код в соответствии с моими требованиями, мне нужно заново развернуть обновлённый код в производственной среде. Однако в настоящее время я использую официальный Docker-файл для Discourse в производственной среде. Как мне создать новый Docker-файл и как получить доступ к базе данных PostgreSQL для приложения Discourse в производственной среде?

Это выглядит как значительное снижение уровня безопасности. MD5 не подходит для хеширования паролей. Такое изменение затронет критически важную часть Discourse, и вам также придётся поддерживать его во всех будущих выпусках.

Возможно, мы сможем предложить более подходящий подход, если вы объясните, чего именно вы пытаетесь достичь.

Что касается кастомизации Discourse, пожалуйста, ознакомьтесь с материалом по адресу Developing Discourse Plugins - Part 1 - Create a basic plugin. Система плагинов позволяет безопасно расширять основные функции.

Я создал новые API и мне нужно развернуть их в моём продакшн-коде. Как это можно сделать в продакшн-окружении с использованием Docker?

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

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

Уточнение: как отмечает Джей в комментарии, ни MD5, ни PBKDF2 не являются функциями шифрования.

Обе эти функции являются хеш-функциями. Discourse не хранит пароли.

Абсолютно верно. Даже если вы не верите нам, мы не единственные, кто это говорит.

Какую проблему вы пытаетесь решить?

Требуется помощь в поиске решения. Мне нужно изменить метод шифрования в ROR (Discourse). В настоящее время я использую шифрование MD5. Я внес изменения на уровне кода в локальной среде. Как применить эти изменения на рабочем сервере без использования Docker?

В настоящее время производственная среда настроена с использованием конфигурации Docker.

Вот ссылка, по которой следовали для настройки производственной среды:
URL: discourse/docs/INSTALL-cloud.md at main · discourse/discourse · GitHub

Вы всё ещё не сказали, какую проблему пытаетесь решить. Можете рассказать подробнее, что именно решает MD5?

Вам всё равно нужно реализовать любые внесённые изменения в виде плагина. Вы уже начали изучать, как работают плагины?

Но, скорее всего, вы на самом деле хотите, чтобы Discourse аутентифицировался через ваше существующее приложение. В этом случае вам достаточно просто реализовать discourse_connect, и Discourse не будет нуждаться в информации о том, как вы храните пароли.