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

Должен ли Unicode разрешаться в именах пользователей?

Почему большинство (всех?) сайтов поддерживают только имена пользователей в ASCII? Существуют ли какие-либо соображения безопасности, если администратор решает начать принимать имена пользователей Unicode?

4b9b3361

Ответ 1

Гомоглифы. Пользователь "cat" и "cat" - это разные строки в unicode, хотя они выглядят одинаково. Первое письмо во втором "сэте" - это русское "с" - "CYRILLIC SMALL LETTER ES", точнее. Система не может легко сказать, что вы подменяете другое имя пользователя - на компьютере разные ники.

Изменить: Предотвращение смешанных скриптов не решает проблему. Например, "сосо" является чистым кирилликом и может использоваться для подмены ascii 'coco'.

Кроме того, слева-направо переопределить (и друзей). Оставьте их неанитированными, и они испортят всю вашу страницу.

Ответ 2

HTTP-аутентификация? Могут возникнуть проблемы с отправкой имени пользователя (и/или пароля) юникода по существующим протоколам. Один случай, с которым я столкнулся раньше, - это обычная проверка подлинности. Нет четкого способа обработки отправки этих имен/паролей в юникоде в основных заголовках заголовков.

Ответ 3

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

Что еще более важно, так это то, что пароль должен быть проверен как lanuguage-agnostic: он должен обрабатывать клавиши, независимо от настройки клавиатуры пользователя. Это означает, что "שלום" и "akuo" будут одинаковыми. Это важно, потому что пользователь часто не видит символы пароля, которые он печатает, и они становятся сильно злыми, если включен CAPSLOCK.

Ответ 4

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

Рассмотрим основной случай для выявления чувствительности к регистру: на турецком языке имена пользователей "Id1" и "id1" различны (на турецком языке есть два разных Is, один с точкой и один без, в результате получается 2 файла с надписью и 2 маленьких буквы, которые не соответствуют тем же правилам для печати, что и на английском языке). Поэтому, хотя любой турецкий человек может ввести свое имя на своем родном языке, программа не будет относиться к их имени, как они ожидают - вместо этого он подвергнется странному преобразованию в мутантный английский.

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

Ответ 5

Ваше наблюдение не всегда верно. И выбор ASCII - это скорее человеческие факторы, а не технические проблемы или проблемы безопасности.

В большинстве случаев это просто для простоты программирования. Программист никогда не знает, что все программное обеспечение, библиотеки, утилиты на веб-сайте будут разбиты или нет с некоторыми символами. Почему рискует развитие веб-сайта, в то время как ASCII работает хорошо? Кроме того, некоторые упакованные веб-программы будут препятствовать использованию Unicode в имени пользователя. Это способствует тому, что многие веб-сайты поддерживают только имена пользователей в ASCII.

Теоретически все текущее программное обеспечение может хорошо обрабатывать 8-битные данные. В настоящее время нет проблем с хранением или передачей. Даже если некоторые протоколы нет, они могут переводить в UTF-7 или с другими схемами преобразования.

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

Для целей администратора не так просто напечатать некоторые экзотические символы. Это затрудняет поиск администратором пользователей. Администратору также сложно хранить оскорбительные имена пользователей на иностранных языках с веб-сайта.

Однако, не редкость, что китайские имена пользователей используются на китайском сайте. Это может быть не всегда в ASCII. Так делают и другие культуры и языки. В некоторых глобальных проектах почти все виды символов Юникода. Википедия - пример.

Ответ 6

Обычный ASCII редок, я бы сказал. Часто это просто так, что никто не думает об этом, так как в Западной Европе достаточно латыни 1 и для США. Некоторые базы данных делают различия между текстом в устаревших наборах символов и Unicode (varchar vs. nvarchar), или для других баз данных должен быть установлен специальный набор символов.

Особенно в США многие люди даже не замечают, что ASCII будет недостаточно. Некоторые пытаются найти оправдания с "Пользователи должны ввести его" или аналогичные, которые в большинстве своем являются фиктивными ".

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

Ответ 7

Я бы сказал, что большой причиной является отсутствие поддержки для unicode в большинстве установок PHP. С ним работать нелегко, поэтому почему это возможно, если возможности в ASCII достаточны для охвата всей вашей пользовательской базы?

Ответ 8

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

Представьте себе форум, представьте, что кто-то отправляет сообщение с учетной записью, которая СМОТРЕТЬ идентична вашей. Вы попадаете в неприятности, говорите, что вы этого не сделали, разместите ссылку на свою историю, см. Сообщение не существует. Нажмите на профиль парня, который ACTUALLY разместил его, и bam, у вас есть профиль. Он теперь непристойный.

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