Topik temu duga representatif

Bagaimanakah anda mencegah isu keselamatan teks dwiarah Unicode dan aksara mengelirukan (confusable)?

UmumSukar
Pasukan Editorial Offer.ccDiterbitkan Dikemas kini

Soalan

Semakan kod, nama pengguna, atau paparan domain mengandungi teks Unicode yang kelihatan sama tetapi berbeza dalam storan. Terangkan algoritma dwiarah dan pengesanan confusable, kemudian reka aliran mitigasi yang boleh diaudit.

Gesaan dan konteks

Alat semakan kod, sistem akaun, atau paparan domain menerima aksara yang kelihatan serupa secara visual, atau kawalan dwiarah yang mengubah susunan pembacaan. Terangkan perbezaan antara susunan logik dan paparan, bezakan pengesanan confusable daripada penguatkuasaan dasar, dan reka aliran yang mengekalkan teks pelbagai bahasa yang sah.

Perkara yang dinilai oleh penemu duga

  • Sama ada anda memahami bahawa algoritma dwiarah Unicode mengubah susunan persembahan sementara susunan titik kod logik kekal utuh.
  • Sama ada anda boleh membezakan override, isolate, skrip bercampur, dan pengesanan confusable.
  • Sama ada anda tahu bahawa skeleton UTS #39 ialah nilai perantaraan yang tidak boleh dipaparkan atau diguna semula merentas versi Unicode.
  • Sama ada pengesahan input, persembahan, audit, perbandingan kebenaran (authorization), dan peningkatan versi direka bentuk sebagai pemisahan kebimbangan yang berasingan.

Soalan penjelasan untuk ditanya

Mula-mula kenal pasti sama ada medan tersebut ialah kod sumber, pengecam log masuk, domain diantarabangsakan, teks carian, atau prosa biasa. Sahkan skrip yang dibenarkan, bahasa sasaran, dan sokongan paparan. Kemudian tanya sama ada sesuatu penemuan menyekat, memerlukan semakan, memberi amaran, atau hanya dilogkan. Sahkan versi data Unicode, pengekalan teks asal, dan kadar positif palsu yang boleh diterima.

Jawapan 30 saat

Teks Unicode mempunyai susunan logik dan susunan paparan. UAX #9 menyusun semula persembahan daripada sifat arah, tetapi kawalan bidi tidak mengubah perbandingan, penghuraian (parsing), atau analisis berangka. Dasar keselamatan harus menyekat kawalan berbahaya dan menggunakan UTS #39 untuk pemeriksaan skrip dan confusable. Skeleton ialah kunci perbandingan perantaraan berversi, bukan teks paparan. Simpan teks asal, sertakan diagnostik berversi, sekat atau semak pengecam berisiko tinggi, dan gunakan peraturan perbandingan tepat protokol medan untuk kebenaran.

Pecahan terperinci langkah demi langkah

1. Asingkan susunan logik daripada susunan paparan

Apabila bahasa Arab atau Ibrani bercampur dengan digit, UAX #9 mengira susunan paparan daripada jenis arah kuat, lemah, dan neutral. Override seperti RLO dan LRO memaksa arah, manakala isolate mengehadkan cara segmen dalaman mempengaruhi persekitarannya. Rendering tidak menulis semula jujukan titik kod dalam ingatan dan tidak boleh dijadikan peraturan penghuraian atau perbandingan.

2. Kenal pasti risiko kawalan bidi dan skrip bercampur

Pengecam berstruktur seperti kod sumber, nama fail, dan nama akaun jarang memerlukan kawalan arah sewenang-wenangnya. Lapisan input boleh menolak atau menandakan aksara Bidi_Control; lapisan paparan boleh menunjukkan escape atau sempadan eksplisit. Dasar skrip bercampur harus mengikut set bahasa yang dibenarkan oleh perniagaan, bukan menganggap setiap aksara bukan ASCII sebagai berniat jahat.

3. Gunakan pengesanan confusable berversi

UTS #39 menyediakan data confusables dan mekanisme skeleton untuk pemeriksaan kekeliruan visual. Kebolehkeliruan bergantung pada fon, skrip, dan konteks; ia bukan hubungan kesetaraan mutlak. Simpan teks asal, versi Unicode, analisis skrip, dan penemuan. Kira semula selepas peningkatan data dan semak pertembungan baharu, manakala kebenaran terus menggunakan peraturan perbandingan tepat protokol.

Contoh jawapan berkualiti tinggi

Saya akan bermula dengan mengklasifikasikan risiko medan. Bagi pengecam berstruktur seperti kod sumber, nama pengguna, dan domain, saya akan mengekalkan teks asal serta menyekat skrip dan kawalan arah; prosa pelbagai bahasa biasa harus mengekalkan susun atur dwiarah yang sah. UAX #9 menentukan susunan paparan, manakala kawalan bidi tidak boleh mengubah penghuraian, perbandingan, atau analisis berangka, jadi alat audit harus menunjukkan kedua-dua susunan titik kod logik dan output yang dirender. Pengesanan akan menggabungkan tahap sekatan UTS #39, peraturan skrip bercampur, dan data confusables. Skeleton ialah kunci perantaraan untuk satu versi data Unicode: ia bukan teks paparan mahupun pengecam kekal merentas versi. RLO, campuran skrip yang luar biasa, atau pertembungan dengan pengecam berisiko tinggi sedia ada harus menyekat atau memerlukan semakan; prosa biasa boleh menghasilkan amaran. Perbandingan dan kebenaran mesti menggunakan peraturan penormalan, huruf besar/kecil, dan pengekodan protokol medan dan bukannya persamaan visual. Apabila berlaku peningkatan data Unicode, kira semula penemuan secara berkelompok dan semak pertembungan supaya perubahan tersebut boleh dikesan dan diterbalikkan.

Kesilapan lazim

  • Menganggap susunan paparan sebagai susunan rentetan yang disimpan.
  • Mendakwa bahawa memadam setiap aksara kanan ke kiri menyelesaikan masalah, yang merosakkan teks bahasa Arab atau Ibrani yang sah.
  • Memperlakukan skeleton sebagai hash yang stabil, nilai paparan, atau medan protokol merentas versi.
  • Hanya menyemak ASCII dan mengabaikan fon, skrip, tanda gabungan, dan konteks.
  • Menggunakan persamaan visual untuk kebenaran, tandatangan, atau keunikan dan bukannya peraturan perbandingan tepat medan.

Soalan susulan dan jawapan

Mengapa tidak memadamkan kawalan bidi daripada setiap input?

Ia boleh memudahkan penipuan, tetapi dokumen dan susun atur yang sah mungkin memerlukan kawalan arah. Pilih penyekatan, escaping, pengasingan, atau amaran mengikut risiko medan dan platform sasaran, serta kekalkan bukti yang boleh diaudit.

Bolehkah skeleton dijadikan nama pengguna secara langsung?

Tidak. Ia adalah bentuk pengesanan perantaraan dan berubah mengikut data Unicode. Simpan teks asal dan kunci perbandingan yang ditentukan oleh protokol; gunakan skeleton untuk diagnosis pertembungan atau semakan.

Bagaimanakah anda mengurangkan positif palsu dalam data pelbagai bahasa?

Tentukan set bahasa dan skrip yang dibenarkan, kemudian gabungkan data bahasa CLDR, konteks medan, dan semakan manusia. Berikan amaran pada prosa biasa, sambil mengenakan sekatan yang lebih ketat pada pengecam log masuk, domain, dan pengecam kod.

Sumber awam

Soalan berkaitan