Найдите десять отличий...

Хе-хе...
http://lib.rus.ec/user/26282
http://lib.rus.ec/user/41119

P.S. Этот топик не модерируется, как и все создаваемые мной топики.

Комментарии

lebird написал:
Странно что все в правилах грозят страшно за визуальные совпадения ников, а сложно при валидации автоматом проверять ?

Это, скорее всего, многодельно. Потому что естественный алгоритм предполагает проверку всех возможных вариантов ника. У меня их, скажем - 7, а у кого-то могут быть десятки...
А альтернативный способ нужно выдумывать. Проще предупредить заранее и забанить нарушителя после жалобы "правообладателя" (ой блин, что сейчас будет!).

У Вас так:

RegExp("[оo]ldv[aа]gr[aа]nt","")

Зато правил не нужно и библиотекари ваще ни причем.

lebird написал:
У Вас так:
RegExp("[оo]ldv[aа]gr[aа]nt","")
Зато правил не нужно и библиотекари ваще ни причем.

Это-то да.Но предствьте себе RegExp для ника "aaa...aa" состоящего из (сколько там можно?) 32 букафф (ну пусть даже из 16-ти). Хороший путь озадачить сервер.

Цитата:
RegExp для ника "aaa...aa"

RegExp("[aа][aа][aа]...[aа][aа]","")

lebird написал:
RegExp для ника "aaa...aa"
RegExp("[aа][aа][aа]...[aа][aа]","")

Я же не про то, как написать RegExp, а про то что вариантов для 32 буковок будет 4.294.967.296

Поэтому в базу кладем регэксп и 32 буквами сразу накрываем 4 миллиарда с лишним нахалов

"Если у вас есть проблема и Вы пытаетесь решить ее при помощи регулярных выражений, то у Вас уже две проблемы" (С) Кто-то из великих.
Не знаю как в php но в перле это решается tr'ои типа
tr/укехароси/ykexapocu/
Естетственно список надо расширить учитывая, например Il1 O0 и прочие радости сильно зависящие от шрифта :(

Угу. И потом по этой регулярке просматривать всю базу... Вот счастье-то будет серверу БД...

Не надо так.

Ники lebird и lеbird оба породят "l[eе]bird". ;)

Да нисколько это не сложно. Что сложного проверить каждую букву каждого ника попарно на совпадение, считая, что одинаковые по написанию русские и латинские буквы совпадают? Для Вашего, не самого маленького ника, к приммеру, нужно сделать всего 14 побуквенных сравнений. Для современной тезники это нет ничто. Могу привести пример форума, где побобное сравнение таки делается автоматом.

foxm написал:
Да нисколько это не сложно. Что сложного проверить каждую букву каждого ника попарно на совпадение, считая, что одинаковые по написанию русские и латинские буквы совпадают? Для Вашего, не самого маленького ника, к приммеру, нужно сделать всего 14 побуквенных сравнений. Для современной тезники это нет ничто. Могу привести пример форума, где побобное сравнение таки делается автоматом.

Возьмёшься сделать модуль для этого?

Увы, не знаю, как это сделать на языках, приемлемых для сайта, но на Паскале это выглядело бы примерно так:

var
Syms: string = "A..ZА..Я0..9 -/.."; //предполагается, что ники могут состоять только из русских и
//латинских букв, цифр и некоторых знаков пунктуации
EQs: Array [xx] of String = "AА", "BВ", "CС", "DД", "EЕ", "F", "G",... //здесь для каждого символа прописываются
//все символы, считающиеся "одинаковыми" для данного символа
//xx - число всех допустимых символов

Function ExistNick(theNick:String):Boolean;
var
i, ltn, lcn: Integer,
cNick, theNick: String;
begin
ExistNick := False;
cNick := "";
theNick := upper(trim(theNick);
ltn := length(theNick);
While GetNick(cNick) do // GetNick - функция выборки очередного ника из базы
begin
cNick := upper(trim(cNick);
lcn := length(cNick);
if lcn <> ltn then Exit;
for i := 1 to ltn do
if not EQSym(copy(theNick, i, 1), copy(cNick, i, 1)) then Exit;
end;
ExistNick := True;
end;

Function EqSym(theSym:char, cSym:char):boolean;
var
pt, pc: Integer,
begin
pt := pos(theSym, Syms);
pc := pos(cSym, EQs[pt]);
EqSym := (pc <> 0);
end;

foxm написал:
Увы, не знаю, как это сделать на языках, приемлемых для сайта, но на Паскале это выглядело бы примерно так:

Паскаль не спасает совсем.
Нужен модуль для друпала, который через hook_user подправит процедуру регистрации.
Русские друпалоиды будут счастливы. А их изрядно пасётся на drupal.ru

larin написал:
Нужен модуль для друпала, который через hook_user подправит процедуру регистрации.
Русские друпалоиды будут счастливы. А их изрядно пасётся на drupal.ru

Илья, взгляни на http://drupal.org/project/custom_username_validation . На базе этого можно сделать, будет работать? (я что в друпале, что в перле - ни в зуб ногой, но попробовать можно).

SeNS написал:
larin написал:
Нужен модуль для друпала, который через hook_user подправит процедуру регистрации.
Русские друпалоиды будут счастливы. А их изрядно пасётся на drupal.ru

Илья, взгляни на http://drupal.org/project/custom_username_validation . На базе этого можно сделать, будет работать? (я что в друпале, что в перле - ни в зуб ногой, но попробовать можно).

А какое решение принято ? Eсли разрешить только латиницу, то
-------------------copy/paste----------------
if($nickname == urlencode ($nickname))
{
return true;
}
else
{
return false;
}
-----------------------------
если замена кирилицы на похожую латиницу, то нужна таблица замен а в остальном
http://ru2.php.net/utf8_encode (UTF_to_Unicode)

Imho, не замена не нужна, достаточно лишь выводить предупреждение о допустимости используемых символов.

Если на сервер 3 раза в 5 секунд могут поступать запросы на регистрацию каких-то aeTоaA..MceBО [32 буквы], каждый из которых будет требовать проверки 4 с лишним миллиарда комбинаций, то может быть лучше "пойти другим путем"?

Имхо, лучше сделать второй список ников в БД, с отконвертироваными в один язык "двойными" буквами, и уже с ним сравнивать аналогичным образом переделаный ник новорегящегося.

Никаких миллиардов комбинаций проверять не потребуется. Алгоритм сверки символов элементарен, просто делается сверка ников, записанных в KOI-8, на вхождение русских и латинских символов. Если имеются символы обеих кодовых таблиц, то они переводятся все в латинские, одинаковые по начертанию (например, k и к - можно не учитывать, и так видно) и дальше сравниваются. Мог бы написать такую прогу на ассемлере PDP-11, но вот современными языками, увы, не владею. Но думаю, что для нормального программера это на составит труда. Конечно, над алгоритмом надо немножко подумать ;). А в дальнейшем следует просто запретить при регистрации использовать смешанный код, т.е. сочетание обеих частей кодовой таблицы - латинских и русских символов, в одном нике, при попытке задания такого ника просто будет предложено пользователю исправить ошибку, и использовать только русские или только латинские символы. Большого неудобства это не вызовет.

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

Этого недостаточно.
Кириллица: АТАМАН. Латиница: ATAMAH.

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

Я не понял. В чем смысл смешивания латиницы и русского алфавита? В использовании букв для подделки нормальных ников. Так?

А теперь, внимание, вопрос - сколько у нас ников, которые можно подделать используя только другой алфавит?

За 5 минут нашёл 4 ника. Примеры - в личку.

Кидайте. Но за 5 минут, и всего 4, это как раз подтверждает, что я прав. Кроме того, защититься от такого очень просто. Всего лишь зарегить второй ник. Т.е. - подделки будут сверхредкими.

+ еще остается r - г, которое тут не заметили.

практически все AbanSpy- латиница ,AlbаnSру - латиница + кириллица

все проще. теэги перед сравнением приводятся к одному набору символов a'la perl tr
tr/укехаросиIl1/ykexapoculll/
И уже затем сравниваются

tchsv написал:
все проще. теэги перед сравнением приводятся к одному набору символов a'la perl tr
tr/укехаросиIl1/ykexapoculll/
И уже затем сравниваются

Т.е. каждому нику ставится в соответствие ровно один алиас, приведенный, скажем, к латинскому набору символов. И хранится в базе. А новые ники тоже приводятся к этому же набору и сравниваются сразу с алиасами?

Именно, точнее к некоторому множеству "непохожих" символов. И никаких десятков, а тем более миллионов вариантов рассматривать не требуется. Просто поиск по индексу при регистрации (только не по нику, как сейчас, а по "алиасу"). И одна сортировка и проход по результату при начальном поиске дубликатов.

Гм. Здраствуйте!
От оно ж как бывает. Ну раз уважаемой публике интересно, то рассказываю по порядку.

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

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

Выход вижу простой и незатейлевый. При регистрации автоматически регистрировать ВСЕ варианты написания с учетом заменяемости русских букв на латинские.
У кого то будет несколько дополнительных логинов (например у pkn), у кого то несколько сотен (типа КОМАР, АТАМАН, СТРАХ).
Только так, чтоб было технически невозможно зарегестрировать клон ника, а словесно запрещать как п. 2.1.4. на одном из форумов yurbox , это не серьёзно. Увещевания спамера и флудера не остановят.

З.Ы. Уважаемому pkn выношу благодарность за бдительность.

Цитата:
З.Ы. Уважаемому pkn выношу благодарность за бдительность.

Скорее Ларину за kill-file
;-)

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

Да. Похоже это будет самый простой способ.

Вы таки будете смеяться, но есть выход ещё проще.
Требуется регистрировать ники написанные только латинницей (английскими буквами).
И всё. Никаких больше других кодировок, языков.

Посмотрите на правую колонку сайта "Сейчас на сайте". Вы много видете рускоязычных ников? Я ни одного не узрел. Ибо так исторически сложилось.

Во-первых. Это снимает нашу горячо обсуждаемую проблему.
Во-вторых. Не надо ничего кодить для сайта. Только поставить фильтр проверки для написания ников ТОЛЬКО английскими буквами.
В-третьих, это исторически верно, т.к. в ФИДО кирилических ников не было.

Собственно всё.

З.Ы. Правда есть и ложка дёгтя в это миске мёда. Существующие на данный момент русские ники предётся автоматом перевести в транслит.

Спасибо. Ваше предложение будет обязательно рассмотрено.

Цитата:
Вы таки будете смеяться, но есть выход ещё проще
Таки да. Это предложение очевидно, и я полностью "за", но явно возмутятся поклонники дерьмократии ;D - это ведь ущемление их рсскоязычных прав ;). Так что надо заранее придумать, куда их послать ;).
А между тем, на многих форумах, при разрешенных кириллических никах, они неправильно отображаются при цитировании. Ближайший пример - внешний форум Либрусека. Там русские ники отображаются в цитатах крякозябрами. Поэтому я тоже сторонник латиницы в никах. А уж напоминание о ФИДО и вовсе настраивает в пользу этого предложения ;).
Цитата:
Не дышите, мой старый друг! Равнение на рампу! О, моя молодость! О, запах кулис! Сколько воспоминаний! Сколько интриг! Сколько таланту я показал в свое время в роли Гамлета!
- (С), Ильф и Петров, 12 стульев.

Ники на латинице, ИМХО, действительно лучший выход, как справедливо заметил Тов.Костя ( не уверен правильно ли написал его ник :) ). А то на русском, на английском. Почему тогда не на польском, украинском или иврите? Однообразие всё же иногда приносит пользу. Это вроде как в некоторых языках программирования, можно идентификаторы писать на любом языке, но жутко неудобно.

Тов.Kocтя написал:
Вы таки будете смеяться, но есть выход ещё проще.
Требуется регистрировать ники написанные только латинницей (английскими буквами).
И всё. Никаких больше других кодировок, языков.
...
В-третьих, это исторически верно, т.к. в ФИДО кирилических ников не было.

В последние годы кириллические ники появились.
Правда, в значительной части конференций ники вообще не применялись! Только "реалнейм"

В годы моей молодости любая уважающая себя СУБД имела функцию "фонетического поиска" - например, слова "райт", "paйt", "right" и "write" по-фонетически совпадают. Может, и тут прикрутить что-то такое?

?! Это какая же такая СУБД ? Простите, драгпререч, не верю (с). Максимум, что видел - поиск по кастрированным регуляркам ( WHERE username LIKE 'Lar*'). В общем случае - работает хреново.

Ulenspiegel написал:
?! Это какая же такая СУБД ?

Кстати да, что же это за СУБД такая?

Судья Ди написал:
В годы моей молодости любая уважающая себя СУБД имела функцию "фонетического поиска"

Послушайте, а Вы не контрамот, случаем ? ;)

Ulenspiegel написал:
Послушайте, а Вы не контрамот*, случаем ? ;)

* - Контрамот - это фантастический человек, живущий из будущего в прошлое.

Я не контрамот, я ЕСник. Из прошлого то бишь. MVT, SVS, СВМ (эс-вэ-эм)... ОС ЕС, короче. А СУБД - навскидку АДАБАС (в девичестве ADABAS). См. также http://www.google.ru/search?hl=ru&q=%D1%84%D0%BE%D0%BD%D0%B5%D1%82%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%B8%D0%B9+%D0%BF%D0%BE%D0%B8%D1%81%D0%BA&btnG=%D0%9F%D0%BE%D0%B8%D1%81%D0%BA+%D0%B2+Google&lr=&aq=f&oq=

MFT, VM SP., ДУВЗ... Так это в Natural фонетический поиск есть ? ;) Фигушки - Job not run, JCL error....

Страницы

X