Bahasa Melayu

Alat pembangun · UUID penjana

ID Berjujukan Membocorkan Data Perniagaan: Mengapa API Awam Mendedahkan UUID

· Mengapa ia penting

uuid kriptografi pelayar-apis

Gambar rajah yang membezakan ID berangka berjujukan yang mendedahkan corak pertumbuhan dengan UUID legap yang tidak mendedahkan perkembangan
Ilustrasi vektor ToolAcre asal

ID autokenaikan memberitahu orang luar bilangan pesanan yang anda ambil dan menjadikan setiap rekod boleh dikira. Siaran ini menerangkan perkara yang membetulkan UUID yang mendedahkan, perkara yang tidak dilakukan dan cara memperkenalkannya tanpa penghijrahan.

Nombor invois anda memberitahu pesaing volum anda — kebocoran maklumat dalam /orders/10482

Titik akhir API yang mengembalikan /orders/10482 memberitahu orang luar lebih daripada butiran pesanan itu sendiri. Pengecam berangka memberi isyarat bahawa anda telah memproses sekurang-kurangnya sepuluh ribu pesanan, membayangkan maklumat tentang kadar pertumbuhan anda dan menjadikan setiap pesanan boleh diteka. Gelung mudah melalui nombor berjujukan mendapatkan semula semua rekod tanpa pengesahan atau semakan kebenaran. Corak ini muncul di mana-mana—dalam URL, kunci pangkalan data, nombor invois dan ID transaksi—walaupun apabila sistem memerlukan pengesahan untuk melihat sebarang rekod tunggal. Kompaun masalah dalam pelaporan dan analisis. Penyerang yang boleh mengambil /orders/1, /orders/2, dan meneruskan melalui /orders/10482 mendapat pandangan menyeluruh tentang sejarah pesanan dan arah aliran anda.

Penghitungan dan pengikisan — cara ID berjujukan menukar satu rekod terdedah kepada kesemuanya

Corak berjujukan mendedahkan arah aliran apabila pesanan tiba, produk yang disebut dan corak dalam harga. Pemerhati mengetahui kadar perniagaan anda berkembang atau menguncup. Maklumat itu, sahaja diperoleh daripada penghitungan ID, boleh memaklumkan strategi persaingan, membimbing kejuruteraan sosial atau memaklumkan masa untuk serangan lain. Pendedahan itu tidak memerlukan biaya untuk ditemui dan muncul dalam URL, sejarah pelayar, halaman cache dan log pelayan. Ini bukan teori: firma risikan kompetitif dan jurutera yang ingin tahu secara rutin mengekstrak metrik perniagaan daripada ID yang boleh dikira secara umum. Sampel nombor pesanan mendedahkan kadar pengeluaran dan jumlah volum kepada sesiapa yang cukup bermotivasi untuk mengumpul data dan melakukan analisis asas.

Masalah kereta kebal Jerman dalam satu perenggan — menganggarkan jumlah daripada sampel nombor berjujukan

Penghitungan menggunakan analisis statistik untuk menganggar jumlah volum dan menjejaki corak temporal. Jika pesanan pertama berlaku pada tarikh yang diketahui dan anda menangkap bukti sepuluh pesanan yang tersebar dalam seminggu, selang min menganggarkan kadar keseluruhan. Pesaing, pelabur dan penyerang boleh memperoleh halaju anda tanpa mengakses sebarang data pelanggan di luar ID itu sendiri. Pengecam jujukan menjamin bahawa setiap ID yang lebih besar daripada nombor semasa meramalkan pesanan akan datang; setiap ID yang lebih rendah daripada minimum dalam sampel mengesahkan operasi anda lebih kecil sebelum ini. Titik data sejarah mencipta garis masa pertumbuhan dan membolehkan ramalan. Prinsip yang sama ini terpakai merentas industri: transaksi kewangan, pesanan penghantaran, rekod perubatan dan sebarang sistem yang mendedahkan ID berjujukan.

Perkara yang dibetulkan oleh UUID — rujukan yang tidak boleh digunakan dan tiada isyarat pertumbuhan dalam ID itu sendiri

UUID yang dijana secara rawak mengandungi 122 bits entropi apabila dijana daripada sumber selamat secara kriptografi sebagai RFC 9562 menentukan untuk versi 4. Pengecam tidak boleh diteka, tidak boleh dikira dan tidak mendedahkan apa-apa tentang kadar pertumbuhan atau volum kepada pemerhati luar. Penyerang yang mengetahui /orders/9a1f4e2b-7c3e-4d1a-8a5f-1b2c3d4e5f60 tidak boleh meramalkan UUID pesanan seterusnya atau berjalan ke belakang melalui ID sejarah anda dengan sebarang keyakinan yang munasabah. UUID itu sendiri menjadi rujukan yang unik tetapi legap sepenuhnya. Pengagihan rawak bermakna berbilang pertanyaan tidak mendedahkan corak, tiada perkembangan dan tiada maklumat halaju kepada pemerhati luar yang memantau API anda.

Perkara yang tidak boleh dibetulkan oleh UUID — ID yang tidak boleh diketepikan bukanlah keizinan, dan ketidakjelasan masih memerlukan pemeriksaan akses di belakangnya

Menggantikan ID berjujukan dengan UUID dalam API awam secara operasinya mudah dan tidak memerlukan penyelarasan yang rumit antara sistem. Tambahkan lajur UUID pada jadual pesanan anda, jana satu untuk setiap pesanan baharu, dedahkan UUID dalam respons dan hentikan kekunci angka secara beransur-ansur. Sistem dalaman anda boleh terus menggunakan kunci utama integer untuk prestasi dan kesederhanaan; sahaja antara muka awam sahaja yang berubah. ID jujukan lama kekal dalam pangkalan data untuk rujukan atau jejak audit anda sendiri, tetapi pelanggan dan pihak ketiga sahaja melihat UUID. Pendekatan dwi-kunci ini ialah amalan terbaik untuk mengekalkan prestasi indeks sedia ada sambil mendedahkan pengecam legap kepada dunia luar.

Contoh yang berfungsi — menambah lajur UUID awam bersama kunci integer dalaman dan sahaja mendedahkan bekas

Pendekatan ini berbeza daripada kebenaran sebenar kerana UUID bukan kata laluan dan kekaburan bukan kawalan keselamatan. Pelanggan yang mempunyai akses yang sah kepada /orders/{their-uuid} sepatutnya dapat melihatnya, tetapi /orders/{someone-elses-uuid} mesti masih ditolak oleh semakan akses anda. UUID menyembunyikan nombor pesanan daripada pemeriksaan biasa dan menghalang analisis statistik melalui penghitungan, tetapi logik pengesahan dan kebenaran anda tetap menjadi tanggungjawab kod aplikasi anda. Perlindungan adalah berlapis: UUID menghentikan kebocoran maklumat dalam pengecam itu sendiri dan kawalan akses menguatkuasakan orang yang boleh bertindak ke atas pengecam itu.

Perkara ini tidak meliputi — pertukaran prestasi indeks bagi kunci rawak, dibincangkan dalam siaran berasingan

Sempadan operasi penting kerana UUID membetulkan kebocoran maklumat dalam ID itu sendiri tetapi tidak menggantikan mekanisme kawalan akses. Jika pelanggan mempunyai kunci API dan kebenaran yang mencukupi, mereka masih boleh membuat permintaan kepada sistem anda. Skop perkara yang boleh mereka akses ditentukan oleh model kebenaran dan definisi peranan anda, bukan format ID. Manfaat UUID adalah semata-mata bahawa pengecam menghentikan penyiaran volum, jujukan dan data pertumbuhan kepada sesiapa sahaja yang boleh memerhatikannya. Sistem yang direka bentuk dengan baik menggabungkan kelegapan UUID dengan semakan kawalan akses eksplisit pada setiap permintaan ke API.

Bawa pulang: asingkan rujukan awam daripada kunci dalaman — penjana ToolAcre membekalkan UUID yang disokong CSPRNG untuk pihak awam

Penghijrahan praktikal mengelakkan hari bendera dengan menyokong kedua-dua format secara beransur-ansur. Jika anda versi titik akhir anda, v1 API boleh terus mengembalikan ID integer manakala v2 mengembalikan UUID. Pelanggan beralih mengikut rentak mereka sendiri tanpa memerlukan pemotongan yang diselaraskan. Pertanyaan pangkalan data dalaman anda kekal tidak berubah: mereka masih menapis mengikut id integer kerana indeks anda dibina pada lajur itu dan kunci asing anda merujuknya. Sahaja data yang dikembalikan kepada pelanggan berubah. Penjana ToolAcre UUID menghasilkan versi-4 format yang anda akan gunakan; setiap output ialah RFC 9562 UUID yang betul sedia untuk storan, penggunaan dan senario migrasi beransur-ansur.