У меня есть сайт на основе Django (еще не запущенный, поэтому реальных пользователей нет), использующий простой django.contrib.auth, и я хочу хранить пароли в виде обычного текста, а не хэшей SHA-1 с солью.
Вопрос в том, как лучше всего это сделать, надеюсь, без исправления (или исправления обезьяны) исходного кода Django?
ПРИМЕЧАНИЕ. Я прекрасно знаю, что это определенно менее безопасно. Нешифрованный текст требуется для выполнения аутентификации типа «запрос-ответ», например CHAP для PPTP VPN, DIGEST-MD5 для IMAP4 и HTTP Digest для файлового хранилища на основе WebDAV. Итак, я обмениваю безопасность на уровне БД на безопасность на уровне соединения.
Конечно, я думаю об обучении и поощрении пользователей использовать сертификаты X.509 (и не иметь никаких паролей), но это не так просто.
Обратимое шифрование (обфускация) паролей и использование некоторых разрешений на уровне столбцов, поэтому пароль будет INSERTable/UPDATEable, но не SELECTable для веб-пользователя (доступен только для некоторых пользовательских функций проверки, таких как SELECT * FROM users WHERE 'somesha1hash' = USER_HMAC(id, 'salt')), поэтому пароли не будут «просто есть" - это хорошая идея, и я попытаюсь это сделать. Предложения по защите открытых текстовых данных приветствуются, но больше всего я хочу услышать, как взломать способ хранения паролей.