Существует ли соображение безопасности не показать существование идентификатора пользователя?

Я заметил, что на некоторых сайтах, когда Вы запрашиваете напоминание о пароле или регистрируетесь, они скажут Вам, если пользователь не будет существовать (я думаю, что Встреча делает это). Другие сайты просто скажут, что "комбинация пользователя/пароля недопустима" (Google, я верю, делает это).

Существует ли соображение безопасности для того, чтобы не раскрывать существование идентификатора пользователя?

5
задан Chris 27 May 2010 в 06:18
поделиться

6 ответов

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

0
ответ дан 18 December 2019 в 09:48
поделиться

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

Конечно, существуют более сильные формы защиты, но для «глубокоэшелонированной защиты» каждая мелочь складывается.

0
ответ дан 18 December 2019 в 09:48
поделиться

Да: не давайте ботам, генерирующим пароли, повода пытаться взломать этот аккаунт.

Редактировать: Также, как я понимаю, вы не можете связаться с ними и заявить, что ваш почтовый ящик был взломан на этой учетной записи пользователя и дать новый (фальшивый) адрес.

3
ответ дан 18 December 2019 в 09:48
поделиться

Помимо других причин, помимо попыток взлома, может существовать проблема конфиденциальности . Иногда идентификатор пользователя может быть связан с человеком: когда у пользователя есть стандартный ник, который используется на многих сайтах, или когда он использует полное или необычное имя; или, что более важно, когда идентификатор пользователя соответствует номеру документа - как это делают некоторые сайты электронного банкинга. Бесплатное предоставление этой информации (фактическое сообщение всем «этот идентификатор пользователя находится в моей базе данных» ) может стать серьезной проблемой конфиденциальности.

2
ответ дан 18 December 2019 в 09:48
поделиться

Нет, для этого нет веских причин с точки зрения безопасности. Причины для безопасности есть - просто не очень хорошие.

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

Имя пользователя часто можно проверить другими способами (практический)

Пример с электронной почтой особенно ироничен, поскольку весь смысл адреса электронной почты заключается в том, чтобы дать его другим людям, чтобы они могли написать вам. Адреса электронной почты не являются секретными. (Конечно, вы не захотите давать список существующих адресов, но сказать, существует данный адрес или нет, - это совсем другое дело.)

В других случаях, кроме электронной почты, вы можете проверить имя пользователя, попытавшись зарегистрироваться под ним. Если имя пользователя уже существует, у системы нет другого выбора, кроме как сказать вам об этом! Даже если она попытается быть скромной и выдаст вам общую ошибку, злоумышленник с половиной мозга все равно поймет это, а обычные пользователи будут раздражены тем, что не могут зарегистрироваться, и уйдут.

Имя пользователя не является секретом (теоретически)

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

Поскольку имя пользователя обычно не может быть действительно секретным (оно идентифицирует пользователя, в конце концов), оно может стать "полусекретом": чем-то, что не обычно раскрывается, но раскрывается, если вы достаточно настойчивы. Люди часто думают, что два "полусекрета" составляют секрет - но это не так. Конечно, они не думают об этом в таких терминах. Вместо этого они думают: "Не так уж плохо, если у меня будет простой PIN-код, потому что все равно никто не сможет воспользоваться им без моей банковской карты", а отдельно думают: "Не так уж плохо, если я потеряю свою банковскую карту, потому что все равно никто не сможет воспользоваться ею без PIN-кода".

Даже если бы имя пользователя было секретным, это не улучшило бы безопасность. Почему? Потому что теперь у вас просто два пароля. Два пароля - это не "защита в глубину" - это просто один пароль, который был разделен на две части (одну из которых довольно легко скомпрометировать). Это менее эффективно, чем просто сделать пароль вдвое длиннее (или вдвое сложнее).

3
ответ дан 18 December 2019 в 09:48
поделиться

Да, есть.

Вы хотите дать злоумышленникам как можно меньше информации

Если злоумышленник знает имя пользователя, он может попытаться атаковать почтовый ящик этого пользователя. Например, если я знаю ваш логин chris@gmail.com, я могу попытаться взломать ваш аккаунт gmail. Они также могут посмотреть, на каких других сайтах вы зарегистрированы, и попытаться взломать эти сайты (возможно, автор сайта не обеспечил должную защиту своей базы данных), украсть пароль и попытаться использовать этот пароль против других сайтов, на которых зарегистрирован chris@gmail.com.

Если атакующий не знает, что такое правильное имя пользователя, ему придется взломать пароль, который, по сути, представляет собой: Username.Length + Password.Length, что увеличивает время, необходимое для взлома учетной записи.

9
ответ дан 18 December 2019 в 09:48
поделиться
Другие вопросы по тегам:

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