Bereinigen Sie eine Highscore-Tabelle, um anstößige Begriffe / Benutzernamen zu entfernen

43

Ich erstelle eine App für einen Kunden, für den eine öffentlich sichtbare Highscore-Tabelle angefordert wurde. Der Benutzername wird angezeigt. Dies ist ein Freitextfeld, das die Spieler eingeben können. Die Anzahl der Spieler dürfte extrem niedrig sein - ich würde höchstens 10 oder 100 pro Tag erwarten.

Das Feld Benutzername ist länger als 3 Zeichen. Die Namen werden an Firebase Auth-Konten gebunden, diese werden jedoch über die App erstellt und sind nicht an etwas wie Google Play oder ein Facebook-Konto oder ähnliches gebunden. Ich denke, sie werden in Ordnung sein, offensichtliche anstößige Namen zu löschen, aber sie werden keine massiven Ressourcen für die manuelle Moderation haben.

Als ich ein junger Bursche war, bestanden 100% meiner Highscore-Tabellen in meinem lokalen Arcade-Kabinett aus einer Reihe von Schimpfwörtern und anstößigen Begriffen (oder Variationen solcher Wörter).

Ich kann mir nicht vorstellen, dass das Internet die Dinge überhaupt verbessert hat.

Wie kann ich Benutzernamen bereinigen, um sie für die Anzeige sicher zu machen?

NeilD
quelle
10
Möchte der Client Benutzernamen bereinigen? Wenn nicht, dann ist es im Moment wirklich nicht dein Problem.
MonkeyZeus
5
Erste Gedanken: - Machen Sie den Kunden auf diese Gefahr aufmerksam und fragen Sie, ob er Geld für Ihre Zeit ausgeben möchte, um damit umzugehen. - Bitten Sie den Kunden, Ihnen eine Liste nicht zulässiger Begriffe zur Verfügung zu stellen, die entfernt werden sollen. - Ehrlich gesagt, das ist ein Minenfeld. Fragen Sie, ob es überhaupt öffentlich sein soll.
AJFaraday,
4
Siehe auch: Das Scunthorp-Problem .
Draco18s
4
Nicht genau das Gleiche, aber ähnlich genug: Obszönitätsfilter: schlechte Idee oder unglaublich schlechte Idee?
Gary,
3
Sind Emoticon erlaubt? Wie wird die Anzeigetafel angezeigt? Kann ich Ascii ziehen, sobald ich einen Weg gefunden habe, die Punktzahl in deine Anzeigetafel einzutragen? Darf ich URL als Namen eingeben ("XYZ.com", "XYZ_Com", "XYZ_Dot_Com")?
xdtTransform

Antworten:

73

Ich empfehle, dass Sie es einfach dem Kunden von Hand überlassen.

Aus Kostengründen haben Sie diesmal Glück auf Ihrer Seite:

  • Sie erwarten nicht mehr als 100 Benutzer pro Tag, möglicherweise nur 10 pro Tag
  • Sie haben ein Authentifizierungssystem, was bedeutet, dass Verbote dauerhaft sein können
  • Sie haben einen Kunden, der gerne (selten) Namen löscht

Die Realität ist, dass es 10 Minuten dauert, bis sich jemand die Bestenlisten ansieht und alle extremen Namen verbietet. Dies ist einfach billiger und zuverlässiger, als wenn Sie Zeit für eine technische Lösung aufwenden (die Probleme haben wird).

Bei einer so geringen Anzahl an Spielern ist es unwahrscheinlich, dass dies häufig erforderlich ist - sogar einmal pro Woche in Spitzenzeiten dürfte dies ausreichen.


Aber ich habe genug Zeit, ich kann etwas richtig machen?

Falsch.

Man kann sehr leicht etwas falsch machen, was der Marke des Kunden mehr schadet als gar nichts.

Möchten Sie Regex verwenden, um alle schlechten Namen zu fangen? Wir hoffen, dass Sie alles richtig machen und auch alle False-Positives aus mehreren Datenbanken mit internationalen Real-People-Namen filtern:

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

Und selbst wenn Sie das erfolgreich schaffen, sind die Spieler nicht dumm - sie werden sehr leicht einen Weg finden, um einen ebenso anstößigen Namen zu kreieren, den Sie nicht fangen.

Zumindest haben Sie gerade noch mehr Arbeit in die Aktualisierung dieser Regeln gesteckt, verglichen mit der kleinen manuellen Arbeit, nur die höchsten Punktzahlen zu betrachten und zu verbieten.


Nein, aber im Ernst, dies ist ein Kinderspiel - der Kunde hat klargestellt, dass es KEINE TOLERANZ für beleidigende Namen geben kann. Es muss etwas geben!

Wenn dies ehrlich gesagt der Fall ist und Sie überhaupt keine beleidigenden Namen tolerieren können. Die einzig realistische Lösung besteht darin, Ihre Spieler nicht ihre eigenen Namen erstellen zu lassen.

Dies ist die Lösung, die Sie auf fast allen Kinderspielwebsites finden, z. B. auf Cartoon Network.

Anstatt eine leere Eingabe zu machen, geben Sie eine Auswahl vorgefertigter "Namensteile" an. Zum Beispiel:

  • Ein Adjektiv wie "Awesome", "Fantastic", "Cunning"

  • Eine Mitte, wie "Bart", "Laserauge", "Pirat"

  • Ein Substantiv wie "Master", "Winner", "Detector"

Wodurch Anzeigenamen auf Dinge wie "Awesome Pirate Master" beschränkt werden.

Überlegen Sie auch schnell, welche Wortlisten Sie verwenden. Es macht keinen Sinn, dieses System zu implementieren, wenn der Benutzer in der Lage ist, Namen zu fummeln, um Dinge zu erhalten, die noch anstößig oder schmutzig klingen.

Natürlich gibt es auch die Möglichkeit von Duplikaten - aber Sie können dies entweder abschreiben (3 Listen mit 100 Wörtern, die bereits 1 Million mögliche Namen enthalten), je nachdem, wie wenig Spieler Sie haben, oder falls erforderlich, Sie können dies trotzdem überprüfen niemand anderes hat den Namen bei der Registrierung.

Realistisch gesehen ist dies die effektivste Lösung, wenn Sie sich ernsthafte Sorgen über schlechte Namen machen. Sie müssen jedoch eine Kostenanalyse durchführen und feststellen, ob es sich im Vergleich zu einfachen manuellen Überprüfungen wirklich lohnt, dieses System selbst herzustellen.

Bilkokuya
quelle
25
Diese Antwort gefällt mir, weil "Automatisieren Sie nichts, bis Sie mehr über das Problem wissen" meiner Erfahrung nach fast immer das Richtige war.
NeilD
5
Erinnert mich an Lego Universum und Peniserkennung.
2.
7
Ein 4-Jähriger hatte Zugang zu einem meiner Konsolenspiele, in denen Sie Charaktere erstellen können. Dieser Speicherplatz war mit Kot, Penner, Pipi usw. gefüllt. Kinder tun dies und lachen viel ...
Nelson
4
"Aber nein, im Ernst, das ist ein Kinderspiel." Hast du schon von Lego Universe gehört? Nicht einmal Lego konnte einen Penisdetektor bauen . Name Teile: "Cunning Linguist Pirate."
Draco18s
7

Eine kleine Benutzerbasis reicht wahrscheinlich nicht aus, um die einfache Implementierung einer Blacklist zu beeinträchtigen. Es gibt viele Bibliotheken und / oder Wortlisten , auf die hier verwiesen wird , mit denen Sie Benutzernamen einfach mit den Angaben vergleichen können, die Sie für unangemessen halten.

Wenn Sie sich entschieden haben, eine eigene Liste regexzu erstellen, möchten Sie wahrscheinlich Namen herausfiltern.

Wie Bilkokuya betont , kann es Probleme geben, wenn legitime Namen auf die schwarze Liste gesetzt werden. Dies ist eine geschäftliche Entscheidung, die Ihr Kunde treffen muss, auf die Sie ihn jedoch aufmerksam machen können / sollten. Ich kenne keine Möglichkeiten, um den kulturellen Aspekt zu umgehen, außer dass Sie, wenn Sie eine große Anzahl von Benutzern aus Kulturen erwarten, bei denen dies ein Problem sein könnte, möglicherweise eine regionenspezifische Filterung implementieren möchten.

Gründe für die Implementierung einer Art Filter (zusätzlich zu manuellen Überprüfungen):

  • Leichtigkeit der Durchsetzung. Es wird wahrscheinlich nicht länger als eine Stunde dauern, bis etwas los ist.

  • Eine Abschreckung für die weniger engagierten Scherze.

  • Ermöglicht die Überprüfung zum Zeitpunkt der Registrierung, wodurch die Wahrscheinlichkeit verringert wird, dass sie sogar die Highscore-Tabelle erreichen.

  • Funktioniert mit manuellen Überprüfungen.

  • Da es sich um ein altes Problem handelt, sollten viele Ressourcen verfügbar sein.

Mars
quelle