Zawsze chciałem używać losowo generowanych ciągów dla identyfikatorów moich zasobów, więc mogłem mieć krótsze adresy URL takie: / user / 4jz0k1
Ale nigdy tego nie zrobiłem, ponieważ martwiłem się, że losowe generowanie ciągów tworzy rzeczywiste słowa, np .: / user / f * cker. Powoduje to dwa problemy: może być mylące lub nawet obraźliwe dla użytkowników, a także może popsuć SEO.
Potem pomyślałem, że wszystko, co muszę zrobić, to ustawić stały wzór, taki jak dodawanie liczby co 2 litery. Byłem bardzo zadowolony z mojej metody „generate_safe_uuid”, ale potem zdałem sobie sprawę, że było to lepsze tylko dla SEO, a gorsze dla użytkowników, ponieważ zwiększyło współczynnik generowanych słów, np .: / user / g4yd1ck5
Teraz myślę, że mógłbym stworzyć metodę „replace_numbers_with_letters” i sprawdzić, czy nie utworzyła żadnych słów w słowniku lub czymś podobnym.
Jakieś inne pomysły?
ps. Pisząc to, zdałem sobie również sprawę, że sprawdzanie słów w więcej niż jednym języku (np. Angielskim i francuskim, hiszpańskim itp.) Byłoby bałaganem i znów zaczynam kochać identyfikatory zawierające tylko liczby.
AKTUALIZACJA
Niektóre linki każdy powinien przeczytać:
http://thedailywtf.com/Articles/The-Automated-Curse-Generator.aspx
http://blogs.msdn.com/b/oldnewthing/archive/2008/06/27/8659071.aspx
Odpowiedzi:
Kilka wskazówek, które zmniejszą szanse na nieumyślne utworzenie znaczących słów:
To jest przykładowy kod w C # (przy użyciu .NET 4):
Nie gwarantuje to, że nikogo nie urazisz, ale zgadzam się z @DeadMG, że nie możesz celować tak wysoko.
źródło
Po prostu utwórz listę niegrzecznych słów, listę zastępowania liter, a następnie, jeśli wygenerowany identyfikator jest niegrzecznym słowem, powtórz je.
Na przykład (pseudo kod)
(Możesz zapoznać się z innymi zaleceniami krótkiego adresu URL, takimi jak ten, aby uzyskać informacje na temat mieszania / konwersji bazy 62)
Teraz już nie dostać identyfikatory podoba
a55
,sh1t
albo „b00bs”. Oczywiście twoja lista zastępowania liter musi zawierać tylko znaki w twoich niegrzecznych słowach.Ponieważ nikt nie będzie czytać „455”, jak „dupa”, to może chcesz również
return str
wreducestring
jeśli nie zawiera żadnych liter.Przykłady
Witryna graficzna Dribbble ma własne krótkie ciągi znaków dla postów. Używają 0-9, az i AZ jak http://drbl.in/dCWi .
Przeprowadziłem kilka eksperymentów i mam krótkie identyfikatory dla co najmniej kilku niegrzecznych słów. Myślę, że zobaczymy, kiedy dotrą
f
, ale jeszcze ich tam nie ma.To prawda - przekazanie użytkownikowi własnego adresu URL (
/user/whatever
) zamiast samego posta jest znacznie gorsze w przypadku niegrzecznych słów.źródło
Rozważ użycie zamiast tego klucza numerycznego lub szesnastkowego. Zaoszczędzi ci to wielu kłopotów w porównaniu do napisania filtru wulgaryzmów świadomego i18n, a najgorsze, o co musisz się martwić, to martwa wołowina .
źródło
B16B00B5
: PNigdy nie można uniemożliwić automatycznemu systemowi generowania ciągu, który jest obraźliwy dla użytkownika. Na przykład w Chinach niektóre liczby uważa się za pechowe.
Wszystko, co możesz naprawdę zrobić, to powiedzieć użytkownikowi, że jego identyfikator jest losowy, a treść jest nieistotna, a jeśli go dostanie
/user/fucker
, powinien go po prostu zignorować. Te rzeczy się zdarzają i po prostu nie jest to technicznie niewykonalne - tak jak nigdy nie można odfiltrować wulgaryzmów.źródło
Istnieją zasadniczo dwie strategie, które możesz zastosować:
Utwórz system, który nie będzie generował żadnych ofensywnych ciągów. Na przykład możesz skomponować swój identyfikator tylko z liter spółgłosek. Pomijając wszystkie samogłoski, możesz mieć pewność, że Twój system nigdy nie wygeneruje żadnych angielskich słów, niegrzecznych lub w inny sposób.
Po wygenerowaniu całkowicie losowego identyfikatora sprawdź, czy nowy identyfikator nie zawiera żadnych obraźliwych podciągów.
źródło
W wielu sytuacjach (spam e-mail, blokowanie adresu IP itp.) Czarna lista jest przegrywającą grą - nigdy nie będziesz w stanie stworzyć „pełnej” czarnej listy wszystkich możliwych złych rzeczy, które mogą się zdarzyć. a b c d e f
Wiele osób korzysta z białej listy akceptowalnych słów i łączy je w losowej kolejności. (Być może z myślnikiem, kropką lub spacją między każdym słowem).
Niektóre popularne słowniki używane do konwertowania dowolnych liczb na dającą się wyrazić serię słów obejmują:
źródło
Możesz ustawić losowo generowane liczby lub użyć wyrażenia regularnego, aby anulować te, które są obraźliwe:
źródło