高得点表をサニタイズして不快な用語/ユーザー名を削除する


43

クライアント用のアプリを作成しています。クライアントは、一般公開されている高得点表を要求しています。ユーザー名が表示されます。これは、プレイヤーが入力できるフリーテキストフィールドです。プレイヤー数は非常に少なくなる可能性があります-せいぜい10代または100代/日です。

ユーザー名フィールドは3文字より長くなります。名前はFirebase Authアカウントに関連付けられますが、これらはアプリを通じて作成され、Google PlayやFacebookアカウントなどに関連付けられることはありません。明らかに不快な名前を削除しても大丈夫だと思いますが、手動のモデレーション専用の膨大なリソースはありません。

私が若い頃、地元のアーケードキャビネットの高得点表の100%は、悪態をつく言葉や攻撃的な言葉(またはそのような言葉のバリエーション)で構成されていました。

インターネットが事態を改善したとは想像できません。

ユーザー名を安全に表示するためにユーザー名をサニタイズするにはどうすればよいですか?


10
クライアントはユーザー名をサニタイズしますか?そうでない場合、現時点での問題ではありません。
モンキーゼウス

5
最初の考え:-クライアントにこの危険を警告し、あなたの時間にお金を使ってそれを処理したいかどうか尋ねます。-クライアントにスクラブするために許可されていない用語のリストを提供するよう依頼します。-正直なところ、これは地雷原です。彼らがそれをまったく公開したいかどうか尋ねます。
AJFaraday



3
絵文字は許可されていますか?スコアボードはどのように表示されますか?スコアボードにスコアを入力する方法を見つけたら、ドンを描くことができますか?名前としてURL(「XYZ.com」、「XYZ_Com」、「XYZ_Dot_Com」)を入力できますか?
xdtTransform

回答:


73

クライアントに手動で行わせることをお勧めします。

コストの観点から、今回はあなたの側に運があります:

  • 予想されるユーザー数は1日あたり100人以下、おそらく1日あたり10人程度
  • あなたは認証システムを持っています。つまり、禁止は永久的なものになります。
  • 名前を削除してもよいクライアントがいる(まれに)

現実には、誰かがトップリーダーボードを調べて極端な名前を禁止するのにかかる10分です-エンジニアリングソリューションに時間を費やすよりも安くて信頼性が高いでしょう(問題があります)。

このようにプレーヤー数が少ないため、これを頻繁に行う必要はほとんどありません。ピーク時に週に1回で十分です。


しかし、私は十分な時間を持っている、私は正しいことをすることができますか?

違う。

あなたは非常に簡単に何か間違ったことをすることができます。それは何もしないことよりもクライアントのブランドに損害を与えます。

Regexを使用してすべての悪い名前をキャッチしたいですか?完全に正しく理解し、国際的な実在の人物名の複数のデータベースからすべての誤検出をフィルタリングすることをお勧めします。

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

また、上記をうまく管理できたとしても、プレイヤーは愚かではありません-あなたがキャッチしていない同じように不快な名前を作成するシステムを回避する方法を非常に簡単に見つけるでしょう。

少なくとも、最高のスコアを見て禁止するという小さな手作業と比較して、これらのルールを最新の状態に保つために、さらに多くの作業を追加しました。


いいえ、まじめな話ですが、これは子供向けのゲームです-クライアントは、攻撃的な名前に寛容がないことを明確にしました。何かがあるはずです!

これが正直な場合であり、攻撃的な名前をまったく許容できない場合。唯一の現実的な解決策は、プレーヤーに自分の名前を作成させないことです。

これは、Cartoon Networkなど、ほとんどすべての子供向けゲームWebサイトで見つかるソリューションです。

空白の入力を与える代わりに、事前に作成された「名前部分」の選択を与えます。例えば:

  • 「すごい」、「素晴らしい」、「Cな」などの形容詞

  • 「ひげを生やした」、「レーザーアイ」、「海賊」などのミドル

  • 「Master」、「Winner」、「Detector」などの名詞

表示名を「Awesome Pirate Master」などに限定します。

また、使用している単語リストについても簡単に検討してください。ユーザーが名前をいじって攻撃的または汚いものを取得できる場合、このシステムを実装しても意味がありません。

もちろん、重複する可能性もあります-ただし、プレイヤーの数が少ないため、これを書き留めることができます(100ワードの3つのリスト、すでに100万の名前があります)。誰も登録時に名前を持っていません。

現実的には、悪名を真剣に心配している場合、これが最も効果的なソリューションかもしれません。ただし、コスト分析を行う必要があり、このシステムを作成することでさえ、単純な手動チェックと比較して本当に価値があるかどうかを確認する必要があります。


25
私はこの回答が好きです。なぜなら、「あなたが問題についてもっと知るまで、何かを自動化しないでください」が私の経験ではほとんど常に正しいことだからです。
NeilD

5
レゴの宇宙と陰茎の検出を思い出させます。
n0rd

7
4歳のときに、キャラクターを作成できるコンソールゲームの1つにアクセスできました。保存スロットは...、たくさんの子供たちがこれを行ううんち、お尻、おしっこ、などなどで満たされ、そして笑いだったこと
ネルソン


4
「しかし、真剣に、これは子供向けのゲームです。」レゴユニバースについて聞いたことがありますか?レゴでさえペニス検出器を作成できませんでした。名前部分:「 "な言語学者の海賊」。
Draco18s

7

ブラックリストの実装の容易さを損なうには、小さなユーザーベースではおそらく十分ではありません。ここ参照されているものなど、多くのライブラリやワードリストがあり、不適切と思われるものに対してユーザー名を簡単にチェックできます。

独自のリストを試すことにした場合は、おそらくregex名前のフィルタリングに使用する必要があります。

以下のようBilkokuyaが指摘し、合法的な名前がブラックリスト取得に問題がある可能性があります。それはあなたのクライアントが行うビジネス上の決定ですが、あなたが彼らに気付かせることができる/すべきです。文化的側面を回避する方法は知りませんが、それが問題となる可能性のある文化から多数のユーザーを期待している場合は、地域固有のフィルタリングを実装することができます。

(手動チェックに加えて)何らかの形式のフィルタリングを実装する理由:

  • 実装のしやすさ。おそらく何かを始めるのに1時間以上かかることはないでしょう。

  • あまり献身的ないたずらに対する抑止力。

  • 登録時にチェックできるため、ハイスコアテーブルに到達する可能性も低くなります。

  • 作品手動チェック。

  • 古い問題であるため、多くのリソースが利用可能であるはずです。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.