J'ai toujours voulu utiliser des chaînes générées aléatoirement pour les ID de mes ressources, donc je pouvais avoir des URL plus courtes comme ceci: / user / 4jz0k1
Mais je ne l'ai jamais fait, car j'étais préoccupé par la génération aléatoire de chaînes créant des mots réels, par exemple: / user / f * cker. Cela pose deux problèmes: cela peut être déroutant ou même offensant pour les utilisateurs, et cela peut aussi perturber le référencement.
Ensuite, j'ai pensé que tout ce que j'avais à faire était de mettre en place un modèle fixe comme l'ajout d'un nombre toutes les 2 lettres. J'étais très satisfait de ma méthode 'generate_safe_uuid', mais je me suis alors rendu compte qu'elle était seulement meilleure pour le référencement et pire pour les utilisateurs, car elle augmentait le rapport des mots réels générés, par exemple: / user / g4yd1ck5
Maintenant, je pense que je pourrais créer une méthode 'replace_numbers_with_letters', et vérifier qu'elle n'a pas formé de mots contre un dictionnaire ou quelque chose.
D'autres idées?
ps. En écrivant ceci, je me suis également rendu compte que la recherche de mots dans plus d'une langue (par exemple: anglais et français, espagnol, etc.) serait un gâchis, et je recommence à aimer les identifiants uniquement numériques.
MISE À JOUR
Quelques liens que tout le monde devrait lire:
http://thedailywtf.com/Articles/The-Automated-Curse-Generator.aspx
http://blogs.msdn.com/b/oldnewthing/archive/2008/06/27/8659071.aspx
Réponses:
Quelques conseils qui réduiront les chances de créer des mots significatifs par inadvertance:
Voici un exemple de code C # (en utilisant .NET 4):
Cela ne garantit pas que vous n'offenserez personne, mais je suis d'accord avec @DeadMG que vous ne pouvez pas viser si haut.
la source
Créez simplement une liste de mots coquins, une liste de substitution de lettres, puis si un ID généré est un mot méchant, refaites-le.
Par exemple (pseudo code)
(Vous pouvez vous référer à d'autres recommandations d'url courtes comme celle-ci pour plus d'informations sur le hachage / conversion en base 62)
Maintenant , vous ne recevez plus les ID aiment
a55
,sh1t
ou « b00bs ». Votre liste de substitution de lettres n'aurait besoin que de contenir des caractères dans vos mots coquins, évidemment.Puisque personne ne va lire « 455 » comme « cul » , alors vous pourriez aussi vouloir
return str
enreducestring
si elle ne contient pas de lettres.Exemples
Le site de conception graphique Dribbble a ses propres identifiants de chaîne courts pour les publications. Ceux-ci utilisent 0-9, az et AZ comme http://drbl.in/dCWi .
J'ai fait quelques expériences et il y a des identifiants courts pour au moins quelques mots coquins. Je suppose que nous verrons quand ils arriveront
f
, mais ils ne sont pas encore là.Accordé - donner à un utilisateur son propre url (
/user/whatever
) d' identification personnelle au lieu d'un simple post est bien pire avec des mots coquins.la source
Envisagez plutôt d'utiliser une clé numérique ou hexadécimale. Cela vous évitera beaucoup de problèmes par rapport à l'écriture d'un filtre de blasphème compatible i18n, et le pire dont vous aurez à vous soucier est le boeuf mort .
la source
B16B00B5
: PVous ne pouvez jamais empêcher un système automatisé de générer une chaîne offensante pour un utilisateur. Par exemple, en Chine, certains chiffres sont considérés comme malchanceux.
Tout ce que vous pouvez vraiment faire est de dire à l'utilisateur que son ID est aléatoire et que le contenu n'est pas pertinent et s'il l'obtient,
/user/fucker
il doit simplement l'ignorer. Ces choses se produisent et il n'est tout simplement pas techniquement possible de l'éviter, tout comme vous ne pouvez jamais filtrer le blasphème.la source
Il existe essentiellement deux stratégies que vous pouvez utiliser:
Créez un système qui ne générera aucune chaîne offensante. Par exemple, vous ne pouvez composer votre identifiant qu'à partir de lettres consonantiques. En omettant toutes les voyelles, vous pouvez être sûr que votre système ne générera jamais de mots anglais, vilains ou autres.
Après avoir généré un identifiant complètement aléatoire, assurez-vous que le nouvel identifiant n'inclut aucune sous-chaîne offensive.
la source
Dans de nombreuses situations (spam par e-mail, blocage d'IP, etc.), une liste noire est un jeu perdant - vous ne pourrez jamais créer une liste noire "complète" de toutes les mauvaises choses possibles qui pourraient survenir. a b c d e f
Beaucoup de gens utilisent une liste blanche de mots acceptables et les enchaînent dans un ordre aléatoire. (Peut-être avec un tiret ou un point ou un espace entre chaque mot).
Certains dictionnaires populaires utilisés pour convertir des nombres arbitraires en une série de mots prononçables incluent:
la source
Vous pouvez soit créer des nombres générés aléatoirement, soit avoir une expression régulière pour annuler ceux qui sont offensants:
la source