Estoy creando una aplicación para un cliente, que han solicitado tener una tabla de puntaje visible públicamente. Mostrará su nombre de usuario, que es un campo de texto libre que los jugadores pueden ingresar. Es probable que el conteo de jugadores sea extremadamente bajo: esperaría 10 o 100 por día como máximo.
El campo de nombre de usuario tendrá más de 3 caracteres. Los nombres estarán vinculados a las cuentas de Firebase Auth, pero estos se crean a través de la aplicación, no están vinculados a nada como Google Play o una cuenta de Facebook o algo así. Creo que van a estar bien con la eliminación de nombres obviamente ofensivos, pero no van a tener recursos masivos dedicados a la moderación manual.
Cuando era un muchacho joven, el 100% de las tablas de puntaje de mi gabinete de arcade local consistía en un montón de palabras groseras y términos ofensivos (o variaciones de tales palabras).
No puedo imaginar que Internet haya mejorado las cosas en absoluto.
¿Cómo puedo desinfectar los nombres de usuario para que sean seguros para mostrar?
fuente
Respuestas:
Te recomiendo que dejes que el cliente lo haga manualmente.
Desde el punto de vista del costo, esta vez tienes suerte:
La realidad es que los 10 minutos que le tomará a alguien revisar las principales tablas de clasificación y prohibir cualquier nombre extremo, simplemente serán más baratos y confiables, que pasar tiempo en una solución de ingeniería (que tendrá problemas).
Con un recuento de jugadores tan bajo, es poco probable que esto deba hacerse con frecuencia, incluso una vez por semana durante el pico es probable que sea suficiente.
Pero tengo mucho tiempo, puedo hacer algo, ¿verdad?
Incorrecto.
Es muy fácil hacer algo mal, que es más perjudicial para la marca del cliente que no hacer nada en absoluto.
¿Quieres usar Regex para atrapar todos los malos nombres? Mejor espero que lo haga perfectamente bien, y también filtre todos los falsos positivos de múltiples bases de datos de nombres internacionales de personas reales:
https://en.wikipedia.org/wiki/Scunthorpe_problem
E incluso si gestionas con éxito lo anterior, los jugadores no son tontos: encontrarán fácilmente una forma de sortear tu sistema para crear un nombre igualmente ofensivo que no estás captando.
Como mínimo, acaba de agregar aún más trabajo para mantener estas reglas actualizadas, en comparación con el pequeño trabajo manual de solo mirar los puntajes más altos y la prohibición.
No, pero en serio, este es un juego para niños: el cliente ha dejado en claro que NO HAY TOLERANCIA para nombres ofensivos. Tiene que haber algo!
Si esto es sinceramente el caso, y no puedes tolerar nombres ofensivos en absoluto. La única solución realista es no dejar que tus jugadores creen sus propios nombres.
Esta es la solución que encontrará en casi todos los sitios web de juegos para niños, como Cartoon Network.
En lugar de dar una entrada en blanco, le da una selección de "partes de nombre" prefabricadas. Por ejemplo:
Un adjetivo, como "Impresionante", "Fantástico", "Astuto"
Un medio, como "Barbudo", "Ojo láser", "Pirata"
Un sustantivo, como "Maestro", "Ganador", "Detector"
Lo que restringe los nombres para mostrar a cosas como "Awesome Pirate Master".
También considere rápidamente qué listas de palabras está utilizando. No tiene sentido implementar este sistema si el usuario puede manipular nombres para obtener cosas que todavía suenan ofensivas o sucias.
Por supuesto, también existe la posibilidad de duplicados, pero puede escribir esto (3 listas de 100 palabras, ya da 1 millón de nombres posibles) debido a la poca cantidad de jugadores que tiene, o si es necesario, aún puede verificar eso nadie más tiene el nombre en el registro.
Siendo realistas, esta puede ser la solución más efectiva si estás seriamente preocupado por los malos nombres. Pero sí necesita hacer un análisis de costos y descubrir si vale la pena incluso hacer este sistema en comparación con simples controles manuales.
fuente
Una pequeña base de usuarios probablemente no sea suficiente para restarle importancia a la facilidad de implementar una lista negra. Hay muchas bibliotecas y / o listas de palabras, como las mencionadas aquí, que pueden permitirle simplemente verificar los nombres de usuario con lo que considere inapropiado.
Si decidió intentar su propia lista, probablemente quiera usarla
regex
para filtrar nombres.Como señala Bilkokuya , puede haber problemas con los nombres legítimos en la lista negra. Esa es una decisión comercial que debe tomar su cliente , pero que usted debe / debe tomar en cuenta. No conozco ninguna forma de sortear el aspecto cultural, excepto que si espera una gran cantidad de usuarios de culturas en las que eso puede ser un problema, es posible que desee implementar un filtrado específico de la región.
Razones para implementar alguna forma de filtrado (además de las verificaciones manuales):
Facilidad de implementación. Probablemente no tomará más de una hora para que algo funcione.
Un elemento disuasorio para los bromistas menos dedicados.
Permite verificar en el momento de la inscripción, reduciendo la posibilidad de que alcancen la tabla de puntaje más alto.
Funciona con controles manuales.
Como se trata de un viejo problema, debería haber muchos recursos disponibles.
fuente