Saya selalu ingin menggunakan string yang dibuat secara acak untuk ID sumber daya saya, jadi saya bisa memiliki URL yang lebih pendek seperti ini: / user / 4jz0k1
Tapi saya tidak pernah melakukannya, karena saya khawatir tentang pembuatan string acak menciptakan kata-kata yang sebenarnya, misalnya: / user / f * cker. Ini membawa dua masalah: itu mungkin membingungkan atau bahkan menyinggung bagi pengguna, dan itu bisa mengacaukan SEO juga.
Kemudian saya pikir yang harus saya lakukan adalah mengatur pola tetap seperti menambahkan angka setiap 2 huruf. Saya sangat senang dengan metode 'generate_safe_uuid' saya, tetapi kemudian saya menyadari bahwa itu hanya lebih baik untuk SEO, dan lebih buruk bagi pengguna, karena itu meningkatkan rasio kata-kata aktual yang dihasilkan, misalnya: / user / g4yd1ck5
Sekarang saya berpikir saya bisa membuat metode 'replace_numbers_with_letters', dan periksa bahwa itu belum membentuk kata apa pun terhadap kamus atau sesuatu.
Ada ide lain?
ps. Ketika saya menulis ini, saya juga menyadari bahwa memeriksa kata-kata dalam lebih dari satu bahasa (misalnya: bahasa Inggris dan Perancis, Spanyol, dll) akan berantakan, dan saya mulai menyukai nomor-nomor ID lagi.
MEMPERBARUI
Beberapa tautan yang setiap orang harus baca:
http://thedailywtf.com/Articles/The-Automated-Curse-Generator.aspx
http://blogs.msdn.com/b/oldnewthing/archive/2008/06/27/8659071.aspx
Jawaban:
Beberapa tips yang akan menurunkan kemungkinan secara tidak sengaja membuat kata-kata yang bermakna:
Ini adalah beberapa kode sampel C # (menggunakan .NET 4):
Ini tidak menjamin bahwa Anda tidak akan menyinggung siapa pun, tetapi saya setuju dengan @DeadMG bahwa Anda tidak dapat membidik dengan begitu tinggi.
sumber
Cukup buat daftar kata nakal, daftar pengganti surat, dan kemudian jika ID apa pun yang dihasilkan adalah kata nakal, ulangi.
Misalnya (kode semu)
(Anda dapat merujuk rekomendasi url pendek lainnya seperti ini untuk info tentang hashing / konversi basis 62)
Sekarang Anda tidak lagi mendapatkan ID suka
a55
,sh1t
atau "b00bs". Daftar pengganti surat Anda hanya perlu memuat karakter dalam kata-kata nakal Anda, jelas.Karena tidak ada yang akan membaca "455" sebagai "keledai" maka Anda mungkin juga ingin
return str
masukreducestring
jika tidak mengandung huruf apa pun.Contohnya
Situs desain grafis Dribbble memiliki id string pendeknya sendiri untuk posting. Ini menggunakan 0-9, az dan AZ seperti http://drbl.in/dCWi .
Saya melakukan beberapa percobaan dan ada id pendek untuk setidaknya beberapa kata nakal. Saya kira kita akan melihat kapan mereka sampai
f
, tetapi mereka belum ada di sana.Memang - memberikan pengguna url (
/user/whatever
) pengenal pribadi mereka sendiri, dan bukan hanya pos, jauh lebih buruk dengan kata-kata nakal.sumber
Pertimbangkan untuk menggunakan tombol angka atau heksadesimal sebagai gantinya. Ini akan menghemat banyak masalah dibandingkan dengan menulis filter senonoh yang sadar saya, dan yang terburuk yang harus Anda khawatirkan adalah daging sapi mati .
sumber
B16B00B5
: PAnda tidak pernah dapat mencegah sistem otomatis menghasilkan beberapa string yang menyinggung pengguna. Misalnya, di Cina beberapa nomor dianggap tidak beruntung.
Yang bisa Anda lakukan adalah memberi tahu pengguna bahwa ID mereka acak dan isinya tidak relevan dan jika mereka mendapatkannya
/user/fucker
mereka harus mengabaikannya. Hal-hal ini terjadi dan itu tidak layak secara teknis untuk menghindarinya - sama seperti Anda tidak pernah dapat menyaring kata-kata kotor.sumber
Pada dasarnya ada dua strategi yang dapat Anda terapkan:
Buat sistem yang tidak akan menghasilkan string ofensif. Misalnya, Anda dapat membuat id hanya dari huruf konsonan. Dengan meninggalkan semua vokal, Anda dapat yakin bahwa sistem Anda tidak akan pernah menghasilkan kata-kata bahasa Inggris, nakal atau sebaliknya.
Setelah membuat id yang benar-benar acak, periksa untuk memastikan bahwa id baru tidak menyertakan substring yang menyinggung.
sumber
Dalam banyak situasi (spam email, pemblokiran ip, dll), daftar hitam adalah permainan yang kalah - Anda tidak akan pernah bisa membuat daftar hitam "lengkap" dari setiap hal buruk yang mungkin terjadi. a b c d e f
Banyak orang menggunakan daftar putih kata-kata yang dapat diterima dan merangkai mereka dalam urutan acak. (Mungkin dengan tanda hubung atau titik atau spasi di antara setiap kata).
Beberapa kamus populer yang digunakan untuk mengonversi angka arbitrer menjadi serangkaian kata yang dapat diucapkan termasuk:
sumber
Anda bisa membuatnya hanya angka yang dibuat secara acak, atau meminta regex untuk membatalkan yang ofensif:
sumber