Лучший способ сделать это - сохранить соль по одному для каждого пользователя, и она генерируется на основе времени в момент, когда они это сделали.
Это правда, что, как только у человека есть доступ к вашей базе данных, он может видеть соль для пользователей, но если это произошло, у вас есть более важные вещи, о которых нужно беспокоиться.
То, как вы проверяете пароль своего пользователя, заключается в том, что вы берете ввод его открытого текста и шифруете его солью, а затем сравниваете crypted_passwords, если они совпадают, они аутентифицированы. Я не верю, что хранение соли является проблемой, так как она вам понадобится. Если вас беспокоят атаки с использованием SQL-инъекций, вам лучше защитить свое приложение от них, а не хранить необходимую информацию, в этом случае каждый пользователь солит.