Я всегда хотел использовать случайно сгенерированные строки для идентификаторов своих ресурсов, поэтому я мог бы использовать более короткие URL, например: / user / 4jz0k1
Но я никогда этого не делал, потому что беспокоился о генерации случайных строк, создающих реальные слова, например: / user / f * cker. Это создает две проблемы: это может сбивать с толку или даже оскорблять пользователей, а также может портить SEO.
Тогда я подумал, что все, что мне нужно было сделать, это установить фиксированный шаблон, например, добавить число каждые 2 буквы. Я был очень доволен своим методом «generate_safe_uuid», но потом я понял, что он был только лучше для SEO и хуже для пользователей, потому что он увеличил соотношение фактических генерируемых слов, например: / user / g4yd1ck5
Теперь я думаю, что мог бы создать метод replace_numbers_with_letters и убедиться, что в нем нет слов против словаря или чего-то еще.
Есть еще идеи?
пс. Когда я писал это, я также понял, что проверка слов на более чем одном языке (например, на английском и французском, испанском и т. Д.) Будет беспорядком, и я снова начинаю любить идентификаторы, состоящие только из цифр.
ОБНОВИТЬ
Некоторые ссылки, которые каждый должен прочитать:
http://thedailywtf.com/Articles/The-Automated-Curse-Generator.aspx
http://blogs.msdn.com/b/oldnewthing/archive/2008/06/27/8659071.aspx
Ответы:
Несколько советов, которые снизят вероятность непреднамеренного создания значимых слов:
Вот пример кода C # (с использованием .NET 4):
Это не гарантирует, что вы никого не обидите, но я согласен с @DeadMG, что вы не можете стремиться так высоко.
источник
Просто создайте список непослушных слов, список замены букв, а затем, если какой-либо сгенерированный идентификатор является непослушным словом, повторите его.
Например (псевдокод)
(Вы можете обратиться к другим рекомендациям по коротким URL-адресам, таким как эта, для получения информации о хешировании / преобразовании базы 62)
Теперь вы больше не получаете идентификаторы нравится
a55
,sh1t
или «b00bs». Очевидно, ваш список замены букв должен содержать только символы в ваших непослушных словах.Так как никто не будет читать «455» , как «жопу» , то вы также можете
return str
в ,reducestring
если она не содержит никаких писем.Примеры
Сайт графического дизайна Dribbble имеет собственные короткие строковые идентификаторы для постов. Они используют 0-9, az и AZ, например http://drbl.in/dCWi .
Я провел некоторые эксперименты, и есть короткие идентификаторы, по крайней мере, для нескольких непослушных слов. Я думаю, мы увидим, когда они доберутся
f
, но они еще не там.Конечно, предоставление пользователю собственного идентифицирующего URL-адреса (
/user/whatever
) вместо простого сообщения намного хуже с непослушными словами.источник
Попробуйте вместо этого использовать цифровой или шестнадцатеричный ключ. Это избавит вас от многих проблем по сравнению с написанием фильтра ненормативной лексики с поддержкой i18n, и самое страшное, о чем вам придется беспокоиться, это мертвая говядина .
источник
B16B00B5
: PВы никогда не сможете запретить автоматической системе генерировать какую-либо строку, которая оскорбительна для пользователя. Например, в Китае некоторые цифры считаются несчастливыми.
Все, что вы действительно можете сделать, это сказать пользователю, что его идентификатор является случайным, а содержимое не имеет значения, и если они его получат,
/user/fucker
ему следует просто проигнорировать его. Эти вещи случаются, и технически просто невозможно избежать этого - точно так же, как вы никогда не сможете отфильтровать ненормативную лексику.источник
По сути, вы можете использовать две стратегии:
Создайте систему, которая не будет генерировать никаких оскорбительных строк. Например, вы можете составить свой идентификатор только из согласных букв. Опуская все гласные, вы можете быть уверены, что ваша система никогда не будет генерировать английские слова, непослушные или нет.
После генерации совершенно случайного идентификатора убедитесь, что новый идентификатор не содержит оскорбительных подстрок.
источник
Во многих ситуациях (спам по электронной почте, блокировка ip и т. Д.) Черный список - игра проигрышная - вы никогда не сможете создать «полный» черный список всех возможных плохих вещей, которые могут когда-либо произойти. а б в г е ф
Многие люди используют белый список приемлемых слов и объединяют их в случайном порядке. (Возможно, с тире или точкой или пробелом между каждым словом).
Некоторые популярные словари, которые используются для преобразования произвольных чисел в произносимые серии слов, включают в себя:
источник
Вы можете сделать это просто случайно сгенерированными числами или использовать регулярные выражения, чтобы отменить оскорбительные:
источник