Я создаю приложение для клиента, которое они просили иметь общедоступную таблицу рекордов. Он будет отображать их имя пользователя, которое представляет собой поле с произвольным текстом, которое игроки могут вводить. Количество игроков, вероятно, будет чрезвычайно низким - я бы ожидал максимум 10 или 100 секунд в день.
Поле имени пользователя будет длиннее 3 символов. Имена будут привязаны к учетным записям Firebase Auth, но они создаются через приложение, а не привязаны к чему-либо вроде Google Play, учетной записи Facebook или чего-либо подобного. Я думаю, что они будут в порядке с удалением явно оскорбительных имен, но у них не будет больших ресурсов, посвященных ручной модерации.
Когда я был молодым, 100% моих рейтинговых таблиц в местном аркадном кабинете состояли из нескольких нецензурных слов и оскорбительных выражений (или вариаций таких слов).
Я не могу вообразить, что Интернет улучшил вещи вообще.
Как я могу санировать имена пользователей, чтобы сделать их безопасными для отображения?
источник
Ответы:
Я рекомендую вам просто позволить клиенту сделать это вручную.
С точки зрения затрат, на этот раз вам повезет:
Реальность такова, что те 10 минут, которые понадобятся кому-то, чтобы просмотреть топ-листы лидеров и запретить любые экстремальные имена, будут просто дешевле и надежнее, чем вы тратите время на инженерное решение (которое будет иметь проблемы).
При таком малом количестве игр маловероятно, что это нужно будет делать часто - даже одного раза в неделю во время пика, вероятно, будет достаточно.
Но у меня много времени, я могу что-то сделать правильно?
Неправильно.
Вы можете очень легко сделать что-то не так, что более вредно для бренда клиента, чем ничего не делать вообще.
Хотите использовать Regex, чтобы поймать все плохие имена? Лучше надеяться, что вы все сделаете правильно, а также отфильтруете все ложные срабатывания из нескольких баз данных международных имен реальных людей:
https://en.wikipedia.org/wiki/Scunthorpe_problem
И даже если вы успешно справитесь с вышеперечисленным, игроки не глупы - они очень легко найдут способ обойти вашу систему, чтобы создать столь же оскорбительное имя, которое вы не поймете.
Как минимум, вы только что добавили еще больше работы по обновлению этих правил по сравнению с небольшой ручной работой - просто смотреть на самые высокие оценки и банить.
Нет, но серьезно, это детская игра - клиент дал понять, что для оскорбительных имен не может быть никакой терпимости. Там должно быть что-то!
Если это действительно так, и вы не можете терпеть оскорбительные имена вообще. Единственное реалистичное решение - просто не позволять игрокам создавать свои собственные имена.
Это решение вы найдете практически на всех детских игровых сайтах, таких как Cartoon Network.
Вместо того, чтобы вводить пустые данные, вы выбираете готовые «части имени». Например:
Прилагательное, такое как «Удивительный», «Фантастический», «Хитрый»
Середина, такая как «Бородатый», «Лазерный глаз», «Пират»
Существительные, такие как «Мастер», «Победитель», «Детектор»
Что ограничивает отображаемые имена такими вещами, как «Awesome Pirate Master».
Также быстро рассмотрите, какие списки слов вы используете. Нет смысла внедрять эту систему, если пользователь может поиграть с именами, чтобы получить вещи, которые по-прежнему звучат оскорбительно или грязно.
Конечно, есть возможность для дубликатов, но вы можете либо списать их (3 списка по 100 слов, уже дает 1 миллион возможных имен) из-за того, что у вас мало игроков, либо, если необходимо, вы можете проверить, что никто другой не имеет имени при регистрации.
На самом деле, это может быть наиболее эффективным решением, если вы серьезно обеспокоены плохими именами. Но вам нужно провести анализ затрат и выяснить, стоит ли даже делать эту систему действительно по сравнению с простыми ручными проверками.
источник
Небольшой пользовательской базы, вероятно, недостаточно, чтобы отвлечь от простоты внедрения черного списка. Существует много библиотек и / или списков слов, таких как те, на которые есть ссылки, которые могут позволить вам просто проверять имена пользователей на предмет того, что вы считаете неуместным.
Если вы решили попробовать свой собственный список, вы, вероятно, захотите использовать его
regex
для фильтрации имен.Как указывает Билкокуйя , могут быть проблемы с тем, что законные имена попадают в черный список. Это бизнес-решение для вашего клиента , но вы должны / должны сообщить ему об этом. Я не знаю каких-либо способов обойти культурный аспект, за исключением того, что, если вы ожидаете большое количество пользователей из культур, где это может быть проблемой, вы можете захотеть применить фильтрацию по регионам.
Причины для внедрения некоторой формы фильтрации (в дополнение к ручным проверкам):
Простота реализации. Вероятно, не займет больше часа, чтобы что-то пошло.
Сдерживающий фактор для менее преданных шутников.
Позволяет проверять во время регистрации, снижая вероятность того, что они даже достигнут таблицы рекордов.
Работает с ручными проверками.
Ввиду того, что это старая проблема, должно быть доступно много ресурсов.
источник