Wyczyść tabelę najlepszych wyników, aby usunąć obraźliwe warunki / nazwy użytkowników

43

Tworzę aplikację dla klienta, który poprosił o publicznie widoczną tabelę najlepszych wyników. Wyświetli się ich nazwa użytkownika, czyli pole tekstowe, które gracze mogą wpisać. Liczba graczy może być bardzo niska - spodziewałbym się co najwyżej 10 lub 100 s.

Pole nazwy użytkownika będzie dłuższe niż 3 znaki. Nazwy zostaną powiązane z kontami Firebase Auth, ale są one tworzone przez aplikację, nie są powiązane z niczym takim jak Google Play lub konto na Facebooku czy coś podobnego. Myślę, że poradzą sobie z usuwaniem obraźliwych nazw, ale nie będą mieli ogromnych zasobów przeznaczonych na ręczne moderowanie.

Kiedy byłem młodym chłopcem, 100% moich lokalnych tabel z najlepszymi wynikami w szafce zręcznościowej składało się z wielu przekleństw i obraźliwych terminów (lub odmian takich słów).

Nie mogę sobie wyobrazić, że Internet w ogóle poprawił sytuację.

Jak zdezynfekować nazwy użytkowników, aby były bezpieczne dla wyświetlania?

NeilD
źródło
10
Czy klient chce dezynfekować nazwy użytkowników? Jeśli nie, to na razie nie jest to twój problem.
MonkeyZeus
5
Pierwsze przemyślenia: - Ostrzeż klienta przed tym niebezpieczeństwem, zapytaj, czy chce wydać pieniądze na twój czas, aby sobie z tym poradzić. - Poproś klienta o podanie listy niedozwolonych warunków do wyszorowania. - Szczerze mówiąc, to jest pole minowe. Zapytaj, czy w ogóle chcą, aby było to publiczne.
AJFaraday
4
Zobacz także: problem Scunthorp .
Draco18s
4
Niezupełnie to samo, ale wystarczająco podobne: Filtry nieprzyzwoite: zły pomysł czy niewiarygodnie przeżywający zły pomysł?
Gary
3
Czy emotikony są dozwolone? Jak będzie wyświetlana tablica wyników? Czy mogę ascii narysować dong, gdy tylko znajdę sposób na zapisanie wyniku w tabeli wyników? Czy mogę wpisać adres URL jako nazwę („XYZ.com”, „XYZ_Com”, „XYZ_Dot_Com”)?
xdtTransform

Odpowiedzi:

73

Polecam po prostu pozwolić klientowi zrobić to ręcznie.

Z perspektywy kosztów tym razem masz szczęście:

  • Oczekujesz nie więcej niż 100 użytkowników dziennie, być może nawet 10 dziennie
  • Masz system uwierzytelniania, co oznacza, że ​​zakazy mogą być trwałe
  • Masz klienta, który chętnie usuwa nazwiska (rzadko)

Rzeczywistość jest taka, że ​​10 minut zajmie, aby ktoś spojrzał na najlepsze tabele liderów i zakazał wszelkich ekstremalnych nazw - będzie po prostu tańszy i bardziej niezawodny, niż spędzasz czas na rozwiązaniu inżynieryjnym (które będzie miało problemy).

Przy tak niskiej liczbie graczy jest mało prawdopodobne, że będzie to wymagało częstych działań - nawet raz w tygodniu w szczycie może wystarczyć.


Ale mam dużo czasu, mogę zrobić coś dobrze?

Źle.

Możesz bardzo łatwo zrobić coś złego, co jest bardziej szkodliwe dla marki klienta niż nic nie robić.

Chcesz użyć Regex, aby wyłapać wszystkie złe nazwiska? Lepiej mieć nadzieję, że zrobisz to idealnie, a także odfiltrujesz wszystkie fałszywe alarmy z wielu baz danych międzynarodowych nazwisk prawdziwych ludzi:

https://en.wikipedia.org/wiki/Scunthorpe_problem

I nawet jeśli uda ci się to zrobić, gracze nie są głupi - bardzo łatwo znajdą sposób na obejście twojego systemu, aby stworzyć równie obraźliwe imię, którego nie złapiesz.

Przynajmniej dodałeś jeszcze więcej pracy, aby zaktualizować te zasady, w porównaniu do niewielkiej pracy ręcznej polegającej na sprawdzaniu najwyższych wyników i banowaniu.


Poważnie, to jest gra dla dzieci - klient wyjaśnił, że nie ma ŻADNEJ TOLERANCJI dla obraźliwych nazwisk. Coś musi być!

Jeśli tak jest w istocie i nie możesz w ogóle tolerować obraźliwych nazwisk. Jedynym realistycznym rozwiązaniem jest po prostu nie pozwalanie graczom tworzyć własnych nazwisk.

To rozwiązanie znajdziesz na prawie wszystkich stronach z grami dla dzieci, takich jak Cartoon Network.

Zamiast podawania pustych danych wejściowych, podajesz wybór gotowych „części nazw”. Na przykład:

  • Przymiotnik, taki jak „Awesome”, „Fantastic”, „Cunning”

  • Środek, taki jak „Bearded”, „Laser-eye”, „Pirate”

  • Rzeczownik, taki jak „Master”, „Winner”, „Detector”

Co ogranicza wyświetlane nazwy do takich rzeczy jak „Awesome Pirate Master”.

Szybko zastanów się, jakich list słów używasz. Nie ma sensu wdrażanie tego systemu, jeśli użytkownik jest w stanie manipulować nazwami, aby uzyskać rzeczy, które nadal brzmią obraźliwie lub brudnie.

Oczywiście istnieje również możliwość duplikatów - ale możesz to odpisać (3 listy po 100 słów, już daje milion możliwych nazw) ze względu na to, jak mało masz graczy, lub w razie potrzeby - nadal możesz to sprawdzić nikt inny nie ma nazwy przy rejestracji.

Realistycznie może to być najskuteczniejsze rozwiązanie, jeśli poważnie martwisz się złymi nazwiskami. Ale musisz przeprowadzić analizę kosztów i dowiedzieć się, czy nawet stworzenie tego systemu jest tego warte w porównaniu z prostymi kontrolami ręcznymi.

Bilkokuya
źródło
25
Podoba mi się ta odpowiedź, ponieważ „nie automatyzuj czegoś, dopóki nie dowiesz się więcej o problemie”, prawie zawsze było to właściwe działanie.
NeilD
5
Przypomina mi wszechświat Lego i wykrywanie penisa.
n0rd
7
4-latek uzyskał dostęp do jednej z moich gier konsolowych, w której możesz tworzyć postacie. Ten slot zapisu był wypełniony kupą, dupą, siusiu itp. Dzieci robią to i śmieją się dużo ...
Nelson
4
„Ale nie, poważnie, to jest gra dla dzieci.” Czy słyszałeś o Lego Universe? Nawet Lego nie mógł zbudować detektora penisa . Nazwy części: „Podstępny pirat lingwistyczny”.
Draco18s
7

Niewielka baza użytkowników prawdopodobnie nie wystarczy, aby pogorszyć łatwość implementacji czarnej listy. Istnieje wiele bibliotek i / lub list słów, takich jak te, o których tu mowa, które mogą pozwolić ci po prostu sprawdzić nazwy użytkowników w stosunku do tego, co uważasz za nieodpowiednie.

Jeśli zdecydowałeś się spróbować własnej listy, prawdopodobnie chcesz użyć regexdo odfiltrowania nazw.

Jak zauważa Bilkokuya , mogą istnieć problemy z umieszczeniem legalnych nazw na czarnej liście. Jest to decyzja biznesowa dla twojego klienta , ale taka, o której możesz / powinieneś poinformować go. Nie znam żadnych sposobów na obejście aspektu kulturowego, z wyjątkiem tego, że jeśli oczekujesz dużej liczby użytkowników z kultur, w których może to być problem, możesz wdrożyć filtrowanie specyficzne dla regionu.

Powody, dla których warto zastosować jakąś formę filtrowania (oprócz kontroli ręcznych):

  • Łatwość wdrożenia. Prawdopodobnie nie zajmie więcej niż godzinę, aby dostać coś dzieje.

  • Odstraszający dla mniej oddanych dowcipnisiów.

  • Pozwala na sprawdzenie w czasie rejestracji, zmniejszając szansę, że osiągną nawet tabelę najlepszych wyników.

  • Działa z kontrolami ręcznymi.

  • Ponieważ jest to stary problem, powinno być dostępnych wiele zasobów.

Mars
źródło