Siempre quise usar cadenas generadas aleatoriamente para las ID de mis recursos, por lo que podría tener URL más cortas como esta: / user / 4jz0k1
Pero nunca lo hice, porque me preocupaba que la generación de cadenas al azar creara palabras reales, por ejemplo: / user / f * cker. Esto trae dos problemas: puede ser confuso o incluso ofensivo para los usuarios, y también puede afectar el SEO.
Luego pensé que todo lo que tenía que hacer era establecer un patrón fijo como agregar un número cada 2 letras. Estaba muy contento con mi método 'generate_safe_uuid', pero luego me di cuenta de que solo era mejor para SEO y peor para los usuarios, porque aumentaba la proporción de palabras reales que se generaban, por ejemplo: / user / g4yd1ck5
Ahora estoy pensando que podría crear un método 'replace_numbers_with_letters', y verificar que no haya formado ninguna palabra contra un diccionario o algo así.
¿Alguna otra idea?
PD. Mientras escribo esto, también me di cuenta de que buscar palabras en más de un idioma (por ejemplo: inglés y francés, español, etc.) sería un desastre, y estoy empezando a amar las identificaciones solo de números nuevamente.
ACTUALIZAR
Algunos enlaces que todos deberían leer:
http://thedailywtf.com/Articles/The-Automated-Curse-Generator.aspx
http://blogs.msdn.com/b/oldnewthing/archive/2008/06/27/8659071.aspx
Respuestas:
Un par de consejos que reducirán las posibilidades de crear palabras significativas sin darse cuenta:
Este es un código de muestra de C # (usando .NET 4):
Esto no garantiza que no ofenderás a nadie, pero estoy de acuerdo con @DeadMG en que no puedes apuntar tan alto.
fuente
Simplemente cree una lista de palabras traviesas, una lista de sustitución de letras, y luego, si alguna ID generada es una palabra traviesa, vuelva a hacerla.
Por ejemplo (pseudocódigo)
(Puede consultar otras recomendaciones de URL cortas como esta para obtener información sobre el hash / conversión de base 62)
Ahora ya no recibe identificaciones les gusta
a55
,sh1t
o "b00bs". Su lista de sustitución de letras solo necesitaría contener caracteres en sus palabras traviesas, obviamente.Puesto que nadie va a leer "455" como "culo", entonces también puede ser que desee
return str
enreducestring
caso de que no contiene ninguna letra.Ejemplos
El sitio de diseño gráfico Dribbble tiene sus propios identificadores de cadena cortos para publicaciones. Estos usan 0-9, az y AZ como http://drbl.in/dCWi .
Experimenté un poco y hay identificadores cortos para al menos algunas palabras traviesas. Supongo que ya veremos cuando lleguen
f
, pero todavía no están allí.Por supuesto, dar a un usuario su propia url de identificación personal (
/user/whatever
) en lugar de solo una publicación es mucho peor con palabras traviesas.fuente
Considere usar una clave numérica o hexadecimal en su lugar. Le ahorrará muchos problemas en comparación con escribir un filtro de blasfemias compatible con i18n, y lo peor de lo que tendrá que preocuparse es carne muerta .
fuente
B16B00B5
: PNunca puede evitar que un sistema automatizado genere una cadena que sea ofensiva para un usuario. Por ejemplo, en China algunos números se consideran desafortunados.
Todo lo que realmente puede hacer es decirle al usuario que su ID es aleatoria y que el contenido es irrelevante y, si lo obtienen
/user/fucker
, simplemente deben ignorarlo. Estas cosas suceden y no es técnicamente factible evitarlo, al igual que nunca se puede filtrar la blasfemia.fuente
Esencialmente, hay dos estrategias que puede emplear:
Crea un sistema que no genere cadenas ofensivas. Por ejemplo, puede componer su identificación solo a partir de letras consonantes. Al omitir todas las vocales, puede estar seguro de que su sistema nunca generará palabras en inglés, traviesas o de otro tipo.
Después de generar una identificación completamente aleatoria, verifique para asegurarse de que la nueva identificación no incluya ninguna subcadena ofensiva.
fuente
En muchas situaciones (correo electrónico no deseado, bloqueo de IP, etc.), una lista negra es un juego perdido: nunca podrá hacer una lista negra "completa" de cada posible mal que pueda ocurrir. a b c d e f
Muchas personas usan una lista blanca de palabras aceptables y las unen en un orden aleatorio. (Quizás con un guión o punto o espacio entre cada palabra).
Algunos diccionarios populares que se utilizan para convertir números arbitrarios en una serie de palabras pronunciables incluyen:
fuente
Puede hacerlo solo con números generados al azar, o tener una expresión regular para cancelar los que son ofensivos:
fuente