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

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

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

Мог какая-либо безопасность испытала людей, здесь отвечают на этот вопрос?

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

ОБНОВЛЕНИЕ:
1: Идентификатором пользователя я означал обращаться к своего рода уникальному идентификатору, быть им идентификатор записи базы данных или некоторый другой уникальный идентификатор. Мне несколько раз говорили, что изменение имени пользователя плохо для безопасности, даже если имя пользователя не является основным / уникальным идентификатором для самой системы.

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

userId: 1234
username: john02
public name: John Jameson
email: j.jameson@dev.null

3: Как указано Jason и Грачом, непротиворечивость кажется единственным серьезным основанием. У меня есть чувство, что эта 'лучшая практика' могла бы быть остатком от где-нибудь в прошлом когда имена пользователей, где на самом деле используется в системе однозначно определить пользователей.

22
задан Community 23 May 2017 в 12:07
поделиться

8 ответов

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

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

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

6
ответ дан 29 November 2019 в 05:29
поделиться

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

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

8
ответ дан 29 November 2019 в 05:29
поделиться

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

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

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

3
ответ дан 29 November 2019 в 05:29
поделиться

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

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

2
ответ дан 29 November 2019 в 05:29
поделиться

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

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

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

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

Только мое мнение. Однако никаких угроз безопасности, если вы не очистите свой ввод.

0
ответ дан 29 November 2019 в 05:29
поделиться

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

2
ответ дан 29 November 2019 в 05:29
поделиться

Я бы сказал, что невозможность изменить имя - ПЛОХО для безопасности. Особенно, когда логин - это адрес электронной почты. Steam - прекрасный пример этого ... люди зарегистрировались 5 лет назад, когда учились в старшей школе, со своими (скрытыми) электронными письмами. Теперь они должны продолжать запоминать это электронное письмо, запоминать пароли Steam и электронной почты, гарантируя, что никто не получил доступ к электронной почте и т. Д., Даже если они не использовали учетную запись электронной почты в течение многих лет. По сути, это снижает вероятность того, что адрес электронной почты для входа в систему действительно проверяется, что делает электронные письма с забытым паролем и т. Д. Менее безопасными.

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

0
ответ дан 29 November 2019 в 05:29
поделиться

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

Edit:

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

5
ответ дан 29 November 2019 в 05:29
поделиться
Другие вопросы по тегам:

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