Joomla имеет встроенную функцию на экране входа в систему «Я забыл свое имя пользователя», так что вы можете ввести свой адрес электронной почты, и имя пользователя будет отправлено вам по электронной почте.
Я думал изменить его так, чтобы имя пользователя отображалось на экране немедленно, без какой-либо формы аутентификации. Это значительно снизило бы трение для наших пользователей, которые возвращаются через долгое время, но это позволило бы любому ввести любой адрес электронной почты и увидеть соответствующее имя пользователя (но точно не наоборот).
Создает ли это какие-либо риски безопасности? Это вообще хорошая идея?

Я бы сказал, что это угроза безопасности слабый для менее опытных пользователей. Для пользователя со слабым паролем, особенно если он связан с их именем пользователя или адресом электронной почты, раскрытие имени пользователя делает их уязвимыми для взлома их учетной записи. Кроме этого, я не могу придумать причину, по которой это могло бы стать проблемой. Если у пользователя хорошие пароли, это вообще не имеет значения.
Я предполагаю, что есть небольшая проблема с анонимностью. Например, на форуме я бы не хотел, чтобы кто-то, кто "знает" меня, узнал мое имя пользователя без моего ведома. В этом случае они могли взять мою электронную почту и получить ее. Но будет ли это проблемой, зависит от вашего сайта и вашей пользовательской базы.
Текущая реализация требует, чтобы пользователь указал своя адрес электронной почты и прочитал полученное электронное письмо, чтобы получить имя пользователя.
Ваша реализация позволяет злоумышленнику сразу узнать, какое имя пользователя связано с адресом электронной почты. Так что, если злоумышленник знает имя пользователя, его можно угадать по адресам электронной почты.
Хуже того, предположим, что злоумышленник каким-то образом знает пароль, но не адрес электронной почты. После успешного угадывания адреса электронной почты можно предположить, что пароль для адрес электронной почты аналогичен паролю для вашего веб-сайта. Итак, вы помогли злоумышленнику захватить учетную запись электронной почты, которая может содержать информацию более об учетных записях дополнительный и так далее.
В общем, изменение любых связанных с безопасностью функций, чтобы сделать вещи «проще», чем стандартная реализация, вероятно, влечет за собой риск для безопасности. +1 за исследование через SO перед внедрением!
@nickf: Верно, но он не знал адрес электронной почты, пока не угадал его с помощью вашей системы. :-)
Нет, наоборот - вы вводите свой адрес электронной почты, и он сообщает вам соответствующее имя пользователя. даже с существующей системой они будут закрыты, поскольку злоумышленник в любом случае сможет прочитать электронную почту человека.
Начнем сначала: коллега наблюдает за тем, как вы входите в свой компьютер на работе, и крадет ваш пароль. Теперь он заходит в предложенную вами систему и угадывает адреса электронной почты, пока не скажет: «Ваш идентификатор - никф». А-ХА: теперь он идет к вашему провайдеру электронной почты и пробует варианты вашего рабочего пароля, пока не войдет ...
На первый взгляд это кажется «плохой идеей», потому что вы позволяете кому угодно:
Если имена пользователей и почтовые адреса рассматриваются на вашем сайте как «личная» информация и еще не переданы, то я бы не стал реализовывать поиск имени пользователя по электронной почте. Фактически вы понижаете планку безопасности в 1 раз:
Возможно, что более важно, вы создаете проблему с конфиденциальностью, которую необходимо решить (как указано в @SoapBox).
Но на самом деле ваш сайт может уже использовать «имя пользователя» в качестве общедоступного дескриптора или псевдонима. И, возможно, у вас уже есть пользователи, публикующие свою электронную почту в своих профилях. Если это так, поиск имени пользователя не приводит к утечке новой информации, и вы можете утверждать, что не возникает никаких новых проблем с безопасностью или конфиденциальностью.
Это бы все упростило, например, опубликовать руководство для детей по сценариям на как взломать мой сайт:
Итог - я думаю, вам лучше оставить эту функцию как есть.
но если «хакер» получил пароль пользователя и адрес электронной почты, тогда пользователь уже полностью заблокирован, и они будут в том же положении, независимо от того изменения, о котором я говорю?