Topik temu duga representatif

Reporting API: Bagaimanakah anda membina kebolehlihatan keselamatan dan penyusutan frontend yang boleh dikawal?

FrontendSukar
Pasukan Editorial Offer.ccDiterbitkan Dikemas kini

Soalan

Reka bentuk penyelesaian Reporting API frontend yang mengumpul laporan CSP, Permissions-Policy, penyusutan, dan ranap, serta terangkan keserasian, kawalan hingar, dan risiko privasi.

Gesaan dan konteks

Reporting API menyediakan mekanisme lazim kepada pelayar untuk laporan CSP, Permissions-Policy, Integrity-Policy, COEP, penyusutan, dan campur tangan (intervention). Laporan boleh dibaca dalam halaman dengan ReportingObserver atau di-POST oleh pelayar ke titik akhir (endpoint) jauh. Temu duga ini menguji sama ada anda boleh menukar isyarat pelayar kepada kebolehlihatan yang boleh dipercayai tanpa menyalin data pengguna ke dalam log jangka panjang.

Perkara yang dinilai oleh penemu duga

  • Sama ada anda membezakan sempadan kebolehpercayaan antara pemerhati dalam halaman dan titik akhir jauh.
  • Sama ada anda mereka bentuk Reporting-Endpoints, penghalaan jenis laporan, pensampelan, dan penyahduplikasian.
  • Sama ada anda mengendalikan risiko privasi dalam URL, ejen pengguna (user agent), dan parameter perniagaan.
  • Sama ada anda menghubungkan pelancaran mod report-only, amaran, pembetulan, dan pengesahan regresi.

Soalan untuk dijelaskan terlebih dahulu

Sahkan sama ada matlamatnya adalah migrasi dasar keselamatan, peningkatan penyusutan pelayar, atau petunjuk ranap. Jelaskan sokongan pelayar, halaman rentas-asal (cross-origin), pengekalan, pematuhan, kapasiti lonjakan (burst) titik akhir, dan sama ada URL mentah boleh dihantar kepada pihak ketiga.

Jawapan 30 saat

Saya akan menggunakan empat lapisan: pengumpulan, pengangkutan, pemprosesan, dan tadbir urus. Mulakan dasar dalam mod report-only, halakan jenis laporan melalui Reporting-Endpoints, gunakan pemerhati untuk penyahpepijatan segera, dan gunakan laporan jauh untuk pengagregatan di luar kitaran hayat halaman. Pelayan menggunakan had kadar, penyahduplikasian, pengredaksian, dan pensampelan sebelum amaran dan ujian regresi. Penghantaran tidak dijamin, jadi ini tidak boleh menggantikan pemantauan ralat sebenar.

Perbincangan mendalam langkah demi langkah

1. Memilih laluan pengumpulan

ReportingObserver sesuai untuk pembangunan dan diagnosis dalam halaman dengan pilihan types dan buffered. Titik akhir jauh menerima POST application/reports+json daripada ejen pengguna; ia boleh mengekalkan petunjuk selepas halaman ranap dan lebih baik untuk pengagregatan pengeluaran. Kedua-dua laluan masih memerlukan pengendalian keserasian pelayar dan kehilangan data.

2. Mereka bentuk titik akhir dan penghalaan

Isytiharkan titik akhir dinamakan dengan Reporting-Endpoints, kemudian pilih destinasi daripada arahan pelaporan CSP, COEP, atau Permissions-Policy. Halakan mengikut type ke dalam saluran paip keselamatan, penyusutan, dan kebolehpercayaan. Sediakan titik akhir default untuk laporan seperti crash dan deprecation yang tidak mempunyai pengepala khusus. Sahkan jenis kandungan dan saiz badan semasa penyerapan.

3. Mengawal hingar dan privasi

Nyahduplikasi mengikut tapak, versi, jenis laporan, dan cap jari ralat; hadkan kadar setiap sumber; dan alih keluar parameter pertanyaan, pengecam akaun, serta laluan sensitif sebelum pengagregatan. Simpan medan diagnostik sahaja, kuat kuasakan pengekalan pendek, dan audit akses. Laraskan pensampelan mengikut keterukan dan delta versi baharu supaya satu isu keserasian tidak menjadi ribut amaran.

4. Menutup gelung tadbir urus

Wujudkan garis dasar dalam mod report-only sebelum mengetatkan dasar. Hubungkaitkan laporan penyusutan baharu dengan versi pelayar dan kelompok keluaran, kemudian sahkan pembetulan dengan regresi automatik atau laporan ujian yang dijana oleh WebDriver. Pantau kejayaan titik akhir, kependaman, penurunan (drops), dan masa pembaikan. Kekalkan laluan terdegradasi yang tidak boleh menyekat halaman.

Contoh jawapan yang mantap

Mula-mula saya akan mengehadkan matlamat pengumpulan dan sempadan data. Bagi migrasi dasar, saya akan bermula dalam mod report-only, menghantar laporan CSP, Permissions-Policy, dan penyusutan ke titik akhir terkawal melalui Reporting-Endpoints, dan menghalakan laporan mengikut jenis. ReportingObserver adalah untuk diagnosis segera; fakta pengeluaran diperoleh daripada pengagregatan jauh, dengan kaveat jelas bahawa pelayar tidak menjamin penghantaran.

Pelayan mengesahkan application/reports+json, menguatkuasakan had saiz dan kadar, serta menyahduplikasi mengikut tapak, versi, jenis, dan cap jari. Ia menanggalkan parameter pertanyaan URL dan pengecam akaun, hanya mengekalkan dimensi ejen pengguna peringkat versi, dan menggunakan pengekalan pendek dengan audit akses. Amaran menggunakan keterukan, delta keluaran, dan halaman yang terjejas untuk pensampelan. Selepas pembetulan, ujian regresi mengesahkan kadar laporan menurun. Saluran paip ini tidak boleh menyekat pelaksanaan halaman atau menggantikan pemantauan ralat frontend dan pemantauan pengguna sebenar.

Kesilapan biasa

  • Hanya menggunakan ReportingObserver dan kehilangan petunjuk apabila halaman ranap.
  • Menulis URL mentah, parameter pertanyaan, atau ejen pengguna lengkap ke dalam log jangka panjang.
  • Menganggap titik akhir menjamin penghantaran tanpa memantau penurunan, pendikit (throttling), dan perbezaan pelayar.
  • Menganggap penemuan report-only sebagai dasar penyekatan tanpa garis dasar atau pelancaran berperingkat.

Soalan susulan dan jawapan

Bagaimanakah anda memilih antara pemerhati dalam halaman dan titik akhir jauh?

Pemerhati mudah dinyahpepijat dan diproses dengan kod halaman tetapi bergantung pada halaman yang kekal aktif. Titik akhir jauh mengagregat secara bebas dan mengekalkan petunjuk pengeluaran atau ranap. Kedua-duanya boleh dijalankan bersama, dengan kunci penyahduplikasian bagi mengelakkan pengiraan berganda.

Bagaimanakah anda menghalang sistem pelaporan daripada membocorkan maklumat pengguna?

Gunakan senarai benarkan medan, pengredaksian URL, had saiz, dan kawalan kadar semasa penyerapan. Kekalkan dimensi versi dan bukannya pengecam lengkap, gunakan pengekalan pendek dengan penyulitan dan audit, serta sekat akses rentas pasukan.

Mengapakah jumlah laporan mungkin melonjak secara tiba-tiba?

Hiris mengikut keluaran, pelayar, tapak, jenis, dan cap jari untuk mengasingkan regresi baharu, salah konfigurasi dasar, trafik bot, dan percubaan semula. Periksa pendikit titik akhir dan pensampelan sebelum meningkatkan isu atau mengundur balik (roll back) sesuatu keluaran.

Sumber awam

Soalan berkaitan