Подтвердить что ты не робот

Почему имена пользователей не могут быть изменены?

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

Я искал окончательный ответ о том, почему изменение имени пользователя небезопасно, но я не могу найти ответ.

Может ли кто-нибудь из опытных людей безопасности ответить на этот вопрос?

Примечание: если вы не знаете ответа, пожалуйста, воздержитесь от спекуляций. Я подумал о нескольких причинах сам, но я не знаю ответа, следовательно, вопрос.

UPDATE:
1: По userId я хотел ссылаться на какой-то уникальный идентификатор, будь то идентификатор записи базы данных или какой-либо другой уникальный идентификатор. Мне несколько раз говорили, что изменение имени пользователя плохо для безопасности, даже если имя пользователя не является основным/уникальным идентификатором самой системы.

2: Я разрешаю пользователям изменять свое "публичное имя". Это имя, которое используется для идентификации пользователя другим (не-привилегированным) пользователям. например:

userId: 1234
username: john02
public name: John Jameson
email: [email protected]

3: Как указано Джейсоном и The Rook, последовательность кажется единственной веской причиной. Я чувствую, что эта "лучшая практика" может быть оставлена ​​где-то в прошлом, когда имена пользователей, которые фактически используются в системе, уникально идентифицируют пользователей.

4b9b3361

Ответ 1

В аспекте безопасности существует ряд причин, по которым вы, возможно, не захотите, чтобы пользователи меняли свои имена. Однако, как тотальное "НИКОГДА не делай этого" - я не обязательно согласен. Но, учитывая изменение имен, создается довольно много дополнительной работы. Если вы собираетесь разрешить пользователям изменять свою личность, вы должны быть очень осторожны из-за причин ниже.

  • Поддержание согласованного идентификатора пользователя. Скажем, вы запустили доску объявлений, а Troll_1 включен в список всех блоков. Если Troll_1 может изменить свое имя, то все эти фильтры пользователей не подходят, и у вас есть некоторые недовольные пользователи.
  • Наряду с ответом номер 1, вы также хотите поддерживать согласованность в своих базовых системах. Если пользователям разрешено изменять имена, вам необходимо убедиться, что вы либо обновляете каждую систему, которую использует этот пользователь, чтобы он или она не теряли (или получали) разрешения в областях, в которых они (или не разрешены), Кроме того, если пользователь изменяет свое имя, и новый пользователь хочет использовать это имя, вы можете случайно предотвратить доступ нового пользователя к старой пользовательской информации/данным/независимо от того, если вы не сделали должной осмотрительности при обновлении своих систем.
  • В зависимости от того, какая у вас система, позволяющая кому-либо изменить свое имя пользователя, может привести к тому, что ваша система подвернется злоупотреблениям с точки зрения мошенничества. Вы могли бы заставить кого-то переключать свое имя назад и вперед, притворяясь двумя разными людьми, пытаясь кого-то обмануть. Несчастная жертва может легко попасть за нее. (Звучит глупо, я знаю, но я видел, как люди придумывают сумасшедшее дерьмо.)

В любом случае, как я уже сказал, я не считаю, что это обязательно плохо, чтобы пользователи могли менять свои имена. Тем не менее, это создает для вас, разработчик, немного больше работы. Имена пользователей теперь не могут быть уникальными идентификаторами в базе данных, и теперь имена пользователей не обязательно связаны с кем-то (потому что они могут быть изменены позже), поэтому для выражения "уникальности" вы должны иметь другую систему.

Ответ 2

Если вы не позволяете людям менять свои имена пользователей, некоторые люди просто собираются создавать новые учетные записи. Я не вижу в этом угрозы безопасности, и многие приложения, включая SO, позволяют вам изменить свое имя. Если вы измените имя, сохраните идентификатор пользователя (первичный ключ) таким же, чтобы все данные связывались правильно.

Единственная опасность, которую я вижу, - это изменить свое имя на уже существующую учетную запись, например "admin".

Ответ 3

Я не согласен с посылкой. Существует множество сайтов с большим именем, которые позволяют вам изменить свое имя пользователя; eBay - один из первых, который приходит на ум.

Edit:

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

Ответ 4

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

Теперь вы можете просто создать новую учетную запись и перенести любую конфигурацию на эту новую учетную запись. Или вы можете использовать что-то другое, кроме имени пользователя, чтобы можно было изменить идентификатор пользователя/логина, но отображалось на какой-то неизменный другой идентификатор - например, порядковый номер или что-то подобное.

У вас должен быть какой-то неизменный идентификатор - по крайней мере, так что любой аудит, выполняемый системой таргетинга, завершен. Создание нового пользователя (таким образом, предоставление нового идентификатора пользователя) при изменении имени нарушает цепочку аудита и требует, чтобы человек помнил, что "О да, в прошлом году ее звали Джейн Смит"...

Ответ 5

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

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

Ответ 6

Трудность возникает, если пользователям разрешено переключаться на имена, которые использовались в прошлом. Если пользователи всегда идентифицируются с использованием некоторого идентификатора, который никогда не будет меняться и не будет использоваться повторно, возможно, будет безопасно и разумно использовать имя пользователя с точки зрения пользовательского интерфейса, если все транзакции записывают как идентификатор пользователя, выполняющего транзакцию, так и имя пользователя в то время транзакция была выполнена. В этом случае что-то вроде сообщения на доске сообщений может быть помечено как "By: SuperCat (как Mighty Kitty)". Supercat будет настоящим именем пользователя плаката, а Mighty Kitty будет именем пользователя, который был у плаката, когда сообщение было написано.

Ответ 7

Я бы сказал, что неспособность изменить имя BAD для обеспечения безопасности. Особенно, когда логин - это адрес электронной почты. Steam - прекрасный пример этого... люди подписались 5 лет назад, когда они были в старшей школе, с их электронными письмами [email protected] Теперь им нужно продолжать запоминать это письмо, помня пароли Steam и электронной почты, гарантируя, что никто не получил доступ к электронной почте и т.д. Даже если они не использовали учетную запись электронной почты в течение многих лет. В основном это уменьшает вероятность того, что адрес электронной почты для входа в систему действительно проверен, что делает электронные письма "забытого пароля" и т.д. Менее безопасными.

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

Ответ 8

Множество ответов. Вероятно, вы уже решили. Вот мои 2 цента:

Не позволяйте людям менять свои имена. Не для безопасности или что-то еще, а потому, что он может плохо отразиться на вашем сайте. Люди знают пользователя как xxx, и они меняются на yyy, тогда их репутация также может исчезнуть. Оскорбительные пользователи просто изменят вашу систему с постоянными изменениями.

Индексирование URL: если вы индексированы так: www.somewhere.com/user/awesomeGuy, тогда awesomeGuy меняет имя на stupidGuy, тогда вы теряете индексированные результаты, и вы получаете 404 ошибки или некоторые такие, когда google-пауки сканируют сайт. Вы получите больше преимуществ, указав URL-адреса пользователей, а не позволяя людям изменять свои имена пользователей. В наши дни возможность изменить свое имя пользователя невелика в списке "must haves", когда люди подписываются на сайт.

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

Просто мое мнение. Никаких рисков безопасности, хотя вы не очищаете свой вход.