Имена пользователей всегда чувствительны к регистру? - PullRequest
8 голосов
/ 12 февраля 2009

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

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

Также обратите внимание - код:

userName.toLowerCase(Locale.ENGLISH)

Все ли имена пользователей на английском? Это просто так, что сопоставление в базе данных? Обратите внимание, что (по крайней мере в Java) String.toLowerCase() определяется как String.toLowerCase(Locale.getDefault())

Ответы [ 8 ]

21 голосов
/ 12 февраля 2009

Unix-логины чувствительны к регистру ...

Есть ли другие системы, которые делают это?

6 голосов
/ 12 февраля 2009

toLowerCase имеет только одну причину для принятия локали:

поскольку на каждом стандартном языке строчная буква i имеет точку, буква I преобразуется в точку i i.

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

«обычная» турецкая столица I превращается в маленькую букву - без точки.

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

каждый другой язык, кроме турецкого, имеет идентичность toLowerCaseImplementation. так что вы можете выбрать Locale.ENGLISH или Locale.GERMAN или что-то еще ... просто убедитесь, что вы не выбрали турецкий язык.

см. Javadoc для получения более подробной информации

edit: благодаря utku karatas я смог / скопировал вставить правильные глифы в этом посте.

3 голосов
/ 12 февраля 2009

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

2 голосов
/ 12 февраля 2009

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

1 голос
/ 12 февраля 2009

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

1 голос
/ 12 февраля 2009

Это зависит от контекста, но в диалекте SQL Informix есть «владельцы» (в основном эквивалентные схеме в стандартном SQL), и то, как вы пишете имя владельца, имеет значение.

SELECT *
    FROM someone.sometable, "someone".sometable,
         SOMEONE.sometable, "SOMEONE".sometable

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

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

Если вы действительно хотите запутать кого-то в Unix, дайте ему числовое имя пользователя (например, 123), но присвойте ему другой UID (например, 234).

0 голосов
/ 12 февраля 2009

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

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

0 голосов
/ 12 февраля 2009

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...