У меня есть две соли, каждый пользователь имеет уникальную соль, которая хранится с информацией о пользователе в базе данных. Вторая соль – та, которая относится к веб-сайту. Оба они необходимы для хеширования паролей.
Проблема в том, что я не знаю, где я должен сохранить свой сайт. Сейчас он находится в методе PHP, который запускает алгоритм хэширования. Должен ли я хранить его в файле вне / var / www / и открыть PHP и прочитать файл? Я не хочу хранить его в базе данных, потому что это приведет к нарушению цели создания двух солей, если моя база данных будет скомпрометирована.
Какие-либо предложения?
Один вариант еще не упоминается? Экологическая переменная, обслуживаемая сервером. Вы можете сделать это в httpd.conf или в .htaccess. Поскольку Apache не обслуживает файлы .htaccess, вам не нужно беспокоиться о том, чтобы скрыть это как можно больше …
SetEnv WEBSITE_SALT 232lhsdfjaweufha32i4fv4239tauvkjn
Таким образом, все, что вам нужно сделать в вашем приложении, – $salt = getenv('WEBSITE_SALT');
, Преимущество здесь в том, что оно прозрачно для приложения …
Да, сохраните его в файле конфигурации PHP где-нибудь, желательно в папке над каталогом, которая является веб-корнем.
Хранить соль сайта в файле, который никогда не может быть подан, – ваш лучший вариант здесь. Нет смысла шифровать соль или держать ее вместе с другими, как вы указали. Просто убедитесь, что файл, который вы храните в нем, не может быть отправлен, если запрашивается (за пределами корневого www работает) и убедитесь, что он имеет соответствующие разрешения.
Просто вставьте его в переменную внутри .php-файла. Для небольшого количества добавленной безопасности по неизвестности вы можете сохранить его в (скажем) формате base64 в кодировке и назвать переменную чем-то совершенно безобидным, например
$this_is_not_the_salt_you_are_looking_for = base64_decode(.... encoded salt string here ...);
Для лишнего лишнего бита безопасности поместите файл .php где-то вне веб-корня, так что, если по какой-то причине конфигурация веб-сервера взлетает вверх и начинает обслуживать необработанный PHP-код, файл, содержащий информацию о соле, напрямую не доступен ,
Большинство людей будут хранить постоянную соль в файле конфигурации. Это прекрасно, но вся суть использования СОЛЬ заключается в том, чтобы ваши данные не были прочитаны внешним источником.
Я видел, что многие люди фактически хранят соль в базе данных в поле учетных записей. Вот и трюк. Он был уникально создан при создании учетной записи, поэтому каждый пользователь имеет уникальную соль.
Дело не в соли, а в том, как вы шифруете данные.
sha1($password.md5(md5($password.md5($salt))))
Даже с солью вы, вероятно, никогда не сможете взломать это. Поэтому не беспокойтесь о том, чтобы сохранить его в своей базе данных, если вы решите перейти на уникальную учетную запись. Просто убедитесь, что ваш процесс шифрования силен!