Ich wollte immer zufällig generierte Zeichenfolgen für die IDs meiner Ressourcen verwenden, damit ich kürzere URLs wie diese haben kann: / user / 4jz0k1
Das habe ich aber nie getan, weil ich mir Sorgen gemacht habe, dass durch die Zufallsgenerierung von Zeichenfolgen tatsächliche Wörter erzeugt werden, z. B .: / user / f * cker. Dies bringt zwei Probleme mit sich: Es kann verwirrend oder sogar anstößig für die Benutzer sein und es kann sich auch auf die SEO auswirken.
Dann dachte ich, alles was ich tun musste, war ein festes Muster zu erstellen, wie das Hinzufügen einer Zahl alle 2 Buchstaben. Ich war sehr zufrieden mit meiner Methode 'generate_safe_uuid', aber dann wurde mir klar, dass sie nur für SEO besser und für Benutzer schlechter ist, da sie den Anteil der tatsächlich generierten Wörter erhöht, z. B .: / user / g4yd1ck5
Jetzt denke ich, ich könnte eine Methode 'replace_numbers_with_letters' erstellen und überprüfen, ob sie keine Wörter gegen ein Wörterbuch oder etwas gebildet hat.
Irgendwelche anderen Ideen?
ps. Während ich dies schreibe, wurde mir auch klar, dass das Suchen nach Wörtern in mehr als einer Sprache (z. B. Englisch und Französisch, Spanisch usw.) ein Chaos sein würde, und ich beginne wieder, IDs zu lieben, die nur aus Zahlen bestehen.
AKTUALISIEREN
Einige Links, die jeder lesen sollte:
http://thedailywtf.com/Articles/The-Automated-Curse-Generator.aspx
http://blogs.msdn.com/b/oldnewthing/archive/2008/06/27/8659071.aspx
Antworten:
Ein paar Tipps, die die Wahrscheinlichkeit verringern, versehentlich bedeutungsvolle Wörter zu erstellen:
Dies ist ein C # -Beispielcode (unter Verwendung von .NET 4):
Dies garantiert nicht, dass Sie niemanden beleidigen, aber ich stimme mit @DeadMG überein, dass Sie nicht so hoch zielen können.
quelle
Erstellen Sie einfach eine ungezogene Wortliste, eine Buchstabenersetzungsliste, und wiederholen Sie sie, wenn eine generierte ID ein ungezogenes Wort ist.
Zum Beispiel (Pseudocode)
( Informationen zum Hashing / zur Konvertierung auf Basis 62 finden Sie in anderen kurzen URL-Empfehlungen wie dieser. )
Jetzt erhalten Sie keine IDs wie "
a55
,sh1t
" oder "b00bs" mehr. Ihre Buchstabenersetzungsliste muss natürlich nur Zeichen in Ihren ungezogenen Wörtern enthalten.Da niemand „455“ als „Esel“ lesen wird dann könnten Sie auch wollen
return str
in ,reducestring
wenn sie keine Buchstaben enthält.Beispiele
Die Grafikdesign-Site Dribbble hat eigene kurze String-IDs für Posts. Diese verwenden 0-9, az und AZ wie http://drbl.in/dCWi .
Ich habe ein bisschen experimentiert und es gibt kurze IDs für mindestens ein paar freche Wörter. Ich denke, wir werden sehen, wann sie ankommen
f
, aber sie sind noch nicht da.Zugegeben - es
/user/whatever
ist viel schlimmer , einem Benutzer eine eigene, persönlich identifizierende URL ( ) zu geben, anstatt nur einen Beitrag zu verfassen.quelle
Verwenden Sie stattdessen einen numerischen oder hexadezimalen Schlüssel. Es erspart Ihnen viel Ärger im Vergleich zum Schreiben eines i18n-bewussten Profanitätsfilters, und das Schlimmste, worüber Sie sich Sorgen machen müssen, ist totes Rindfleisch .
quelle
B16B00B5
: PSie können niemals verhindern, dass ein automatisiertes System Zeichenfolgen generiert, die für einen Benutzer anstößig sind. In China beispielsweise gelten einige Zahlen als unglücklich.
Alles, was Sie wirklich tun können, ist dem Benutzer mitzuteilen, dass seine ID zufällig ist und der Inhalt irrelevant ist. Wenn er diese erhält
/user/fucker
, sollte er sie einfach ignorieren. Diese Dinge passieren und es ist technisch nicht machbar, sie zu vermeiden - so wie man Profanität niemals filtern kann.quelle
Grundsätzlich gibt es zwei Strategien, die Sie anwenden können:
Erstellen Sie ein System, das keine anstößigen Zeichenfolgen generiert. Beispielsweise können Sie Ihre IDs nur aus Konsonantenbuchstaben zusammensetzen. Wenn Sie alle Vokale weglassen, können Sie sicher sein, dass Ihr System niemals ungezogene oder sonstige englische Wörter generiert.
Stellen Sie nach dem Generieren einer vollständig zufälligen ID sicher, dass die neue ID keine anstößigen Teilzeichenfolgen enthält.
quelle
In vielen Situationen (E-Mail-Spam, IP-Blockierung usw.) ist eine Blacklist ein Verlustspiel - Sie werden niemals in der Lage sein, eine "vollständige" Blacklist aller möglichen negativen Ereignisse zu erstellen, die jemals auftreten könnten. a b c d e f
Viele Leute benutzen eine Whitelist akzeptabler Wörter und reihen sie in zufälliger Reihenfolge aneinander. (Vielleicht mit einem Bindestrich oder Punkt oder Leerzeichen zwischen jedem Wort).
Einige beliebte Wörterbücher, die zum Konvertieren beliebiger Zahlen in eine aussprechbare Folge von Wörtern verwendet werden, umfassen:
quelle
Sie können entweder nur zufällig generierte Zahlen erstellen oder eine Regex verwenden, um die beleidigenden Zahlen zu löschen:
quelle