Если я делаю СОЛЬ случайной для каждого пользователя, как я аутентифицирую их?

Можно сделать это путем определения чередующий имена классов на строках. Я предпочитаю использовать row0 и row1, что означает, что можно легко включить их, если список создается программно:

for ($i = 0; $i < 10; ++$i) {
    echo '<tr class="row' . ($i % 2) . '">...</tr>';
}

Иначе должен был бы использовать JavaScript. jQuery используется в этом примере:

$('table tr:odd').addClass('row1');

Редактирование: я не знаю, почему я дал примеры с помощью строк таблицы... заменяют tr li и table с ul, и это относится примеру

20
задан krx 12 September 2009 в 20:28
поделиться

5 ответов

Это не отменяет предназначение уникальной соли - хранить ее. Смысл уникальной «соли» - защитить весь репозиторий пользователей от атак, а не отдельного пользователя. Если злоумышленник скомпрометирует вашу базу данных и будет достаточно решителен, чтобы взломать учетную запись конкретного пользователя, он это сделает. Мы ничего не можем с этим поделать. Но им пришлось бы потратить на это непомерно много компьютерного времени - достаточно, чтобы было бы невозможно тратить столько времени на каждого пользователя - таким образом защищая всех ваших пользователей. Сравните это с использованием одной и той же соли для всех пользователей - как только злоумышленник получит соль, те же таблицы / процессы могут быть повторно запущены для каждого пользователя за относительно короткое время.

19
ответ дан 30 November 2019 в 00:01
поделиться

Соль генерируется случайным образом для каждого пользователя, но сохраняется где-то в базе данных. Вы ищите соль для конкретного пользователя и используете ее для аутентификации пользователя.

Дело в том, что, поскольку соль различается для каждого пользователя, вы не можете использовать предварительно созданный словарь хэшей для сопоставления хешированных паролей с открытым текстом ([ атака радуги ).

15
ответ дан 30 November 2019 в 00:01
поделиться

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

Возможно, вам понравится прочитать оригинальную статью о безопасности паролей в Unix. Он очень хорошо объясняет, что такое соль и почему она у нас есть: http://portal.acm.org/citation.cfm?id=359172

2
ответ дан 30 November 2019 в 00:01
поделиться

при создании хешированного пароля вы должны использовать "двойную" соль

Создайте соль (случайный md5 или sha1), затем используйте формат, например, sha1 ("- $ password - $ salt - "), а затем сохранить хешированный пароль и соль в базе данных.

Затем при аутентификации вы воссоздаете хэш из строки - $ pass - $ salt-- и сравниваете его с проходом, хранящимся в db.

1
ответ дан 30 November 2019 в 00:01
поделиться

Вам не нужно отдельное поле для каждого пароля.

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

Умный злоумышленник может попытаться создать настраиваемую радужную таблицу специально для вашей службы, создав учетную запись и изменив свой пароль, чтобы посмотреть, каков будет полученный хэш. Если соль одинакова для каждого пользователя, то, когда он видит, что хэш «xyz123» соответствует «яблоку», и замечает, что хеш другого пользователя также является «xyz123», он может сделать вывод, что пароль этого пользователя - «яблоко». Это момент, когда большинство людей решают хранить уникальную соль для каждого пользователя.

Однако, в этом нет необходимости . У вас уже есть уникальная строка для каждого пользователя - имя пользователя. Это не секрет, значит, это плохая соль; однако объединение имени пользователя и глобальной секретной соли является секретным и уникальным. Если вы храните хэш (имя пользователя + соль + пароль), вам нужно знать только одно глобальное значение соли во время поиска.

(это правда, что это представляет больший риск, если кто-то утекает единственную глобальную соль. Но это метод, заслуживающий рассмотрения).

Верно то, что это представляет больший риск, если кто-то утекает единственную глобальную соль. Но эту технику стоит рассмотреть).

Верно то, что это представляет больший риск, если кто-то утекает единственную глобальную соль. Но эту технику стоит рассмотреть).

1
ответ дан 30 November 2019 в 00:01
поделиться
Другие вопросы по тегам:

Похожие вопросы: