Penampil Doconut menjadi bagian dari batas keamanan aplikasi Anda begitu ia menampilkan kontrak, faktur, gambar teknik, atau catatan pelanggan. Doconut menyediakan lapisan penayangan; aplikasi di sekitarnya tetap harus memutuskan siapa yang boleh membuka file, di mana sumber disimpan, berapa lama data turunan tetap tersedia, dan apa yang dicatat untuk penyelidikan.

Artikel Doconut tentang praktik penayangan dokumen yang aman menjelaskan rendering sisi server sebagai satu lapisan dalam desain pertahanan berlapis. Artikel ini oleh karena itu berfokus pada tanggung jawab aplikasi seputar Doconut dan mengarahkan detail implementasi ke dokumentasi produk yang dipelihara.
Mulailah dengan Model Ancaman
“Privat” dan “aman” bukanlah konfigurasi. Definisikan peristiwa yang perlu Anda cegah atau deteksi sebelum memilih kontrol.
| Risiko | Contoh | Kontrol aplikasi |
|---|---|---|
| Akses tidak sah | Pengguna mengubah pengidentifikasi dokumen di URL | Otorisasi tingkat objek pada setiap permintaan |
| Lintas penyewa | Pengguna valid meminta file pelanggan lain | Lingkup penyewa termasuk dalam keputusan otorisasi |
| Paparan sumber | Jalur penyimpanan atau file asli dikembalikan secara langsung | Alur pencarian dan rendering yang dikendalikan server |
| Akses usang | Tautan tetap dapat digunakan setelah peran atau kasus berubah | Masa hidup sesi singkat plus validasi ulang otorisasi |
| Retensi berlebihan | Input atau output sementara menumpuk | Pekerjaan siklus hidup eksplisit dengan hasil yang dapat diamati |
| Pencatatan sensitif | Token atau lokasi file muncul di log | Redaksi terstruktur dan telemetri hanya pengidentifikasi |
Prioritaskan risiko berdasarkan dokumen dan pengguna dalam sistem Anda. Perpustakaan brosur publik dan portal bukti hukum tidak boleh berbagi kebijakan yang sama hanya karena mereka menggunakan penampil yang sama.
Kasus penggunaan peninjauan dokumen hukum Doconut merupakan referensi yang berguna untuk peran produk dalam alur kerja kasus, kontrak, bukti, dan kepatuhan yang terautentikasi. Ini juga memperkuat batas arsitektural: izin, penyimpanan, catatan pelanggan, dan aturan bisnis tetap dekat dengan aplikasi host.
Otorisasi Sebelum Membuka Dokumen
Lakukan autentikasi dan otorisasi tingkat objek sebelum membuka dokumen dengan Doconut. Panduan penyiapan resmi .NET 6 atau lebih tinggi menunjukkan cara penampil dikonfigurasi dan bagaimana dokumen sisi server dibuka; letakkan identitas aplikasi Anda, penyewa, dan pemeriksaan izin dokumen sebelum langkah produk tersebut.
Ulangi aturan otorisasi yang sama untuk setiap operasi terkait yang diekspos aplikasi Anda, termasuk halaman, thumbnail, pencarian, anotasi, konversi, unduhan, dan pencetakan. Menyembunyikan tombol tidak melindungi permintaan yang mendasarinya.
Hindari menerima jalur sistem file, kunci penyimpanan, atau URL remote secara langsung dari browser. Resolusi ID dokumen yang dimiliki aplikasi ke lokasi penyimpanannya di server, lalu pastikan objek yang diresolusi termasuk dalam penyewa dan alur kerja yang berwenang.
Pisahkan Penampil dari Kebijakan Penyimpanan
Penampil tidak boleh menentukan periode retensi Anda. Dokumentasikan setiap kelas penyimpanan dan pemiliknya:
- Dokumen sumber — dikendalikan oleh kebijakan konten atau catatan utama Anda.
- File kerja sementara — dibuat untuk pemrosesan dan dihapus oleh siklus hidup terjadwal yang dapat diamati.
- Halaman yang dirender atau cache — dibatasi pada masa hidup minimum yang berguna dan dilindungi seperti sumber.
- Ekspor dan file siap cetak — dibuat hanya ketika pengguna memiliki izin yang sesuai.
- Log dan peristiwa audit — berisi pengidentifikasi dan hasil, bukan konten dokumen atau kredensial.
Enkripsi dalam transit dan saat istirahat bergantung pada server web, penyedia penyimpanan, manajemen kunci, dan pengaturan penyebaran Anda. Verifikasi kontrol tersebut di lingkungan nyata; jangan menyimpulkannya dari keberadaan pustaka penampil.
Gunakan Referensi Berumur Pendek dengan Hati-hati
Referensi berumur pendek dapat mengurangi waktu yang tersedia untuk pemutaran ulang, tetapi tidak menggantikan otorisasi. Jika desain Anda menggunakan rute bertanda tangan atau token sesi:
- Hubungkan ke satu dokumen dan operasi yang dimaksud.
- Berikan masa hidup yang sempit berdasarkan alur kerja.
- Hindari menempatkan klaim sensitif atau lokasi penyimpanan dalam teks jelas.
- Validasi ulang otorisasi untuk operasi istimewa.
- Definisikan apa arti pencabutan sebelum waktu kedaluwarsa alami.
- Jaga token tetap di luar analitik, perujuk, pesan pengecualian, dan tangkapan layar.
Saat sesi browser kedaluwarsa, tampilkan pesan netral dan tawarkan cara aman untuk melakukan autentikasi ulang. Jangan mengungkapkan apakah penyewa lain memiliki dokumen tersebut.
Pahami Apa yang Dapat dan Tidak Dapat Dilakukan Kontrol Sisi Klien
Menghapus kontrol unduh atau cetak dapat meningkatkan alur kerja yang dimaksud, tetapi bukan jaminan kerahasiaan. Pengguna yang dapat melihat konten masih dapat menangkap layar, memotretnya, atau menggunakan kemampuan browser di luar penampil.
Anggap pembatasan sisi klien sebagai langkah kegunaan dan pencegahan. Kontrol yang lebih kuat berasal dari menjaga file sumber di belakang server, menerapkan otorisasi pada setiap permintaan terkait, membatasi ekspor, dan menggunakan watermark yang terlihat ketika kebijakan Anda memerlukannya.
Jangan Mengubah Fitur Produk menjadi Klaim Kepatuhan
Kepatuhan regulasi bergantung pada tujuan, kategori data, dasar hukum, kontrak, pemrosesan regional, retensi, respons insiden, dan prosedur organisasi. Penampil dapat mendukung desain yang patuh, tetapi tidak membuat aplikasi menjadi patuh dengan sendirinya.
Untuk penilaian GDPR, dokumentasikan setidaknya:
- Di mana file sumber dan turunan diproses dan disimpan
- Siapa yang berperan sebagai pengendali dan pemroses untuk setiap layanan
- Subpemroses dan transfer mana yang terlibat
- Bagaimana permintaan penghapusan mencapai setiap kelas penyimpanan dan kebijakan cadangan
- Peristiwa mana yang dicatat dan berapa lama log tetap tersedia
- Bagaimana tinjauan akses dan respons insiden dilakukan
Minta pemangku kepentingan privasi dan hukum memvalidasi keputusan tersebut untuk penyebaran Anda.
Tambahkan Header Keamanan dan Aturan Cache
Untuk rute pratinjau yang terautentikasi, evaluasi Content Security Policy yang ketat, kebijakan frame, perlindungan MIME‑sniffing, dan kebijakan perujuk. Jika pratinjau muncul di dalam iframe, buat asal induk yang dimaksud eksplisit.
Pilih header cache sesuai dengan sensitivitas dan rute rendering. no-store mungkin cocok untuk beberapa respons, tetapi dapat memengaruhi kinerja dan tidak menghapus konten yang sudah ditangkap di tempat lain. Uji perilaku browser, proxy, dan CDN daripada mengandalkan header secara terpisah.
Catat Keputusan, Bukan Rahasia
Sebuah peristiwa audit yang berguna mungkin berisi:
- Pengidentifikasi pengguna dan penyewa
- Pengidentifikasi dokumen
- Operasi yang diminta
- Hasil otorisasi
- Stempel waktu dan ID korelasi
- Hasil retensi atau pembersihan
Hindari mencatat token mentah, string kueri, URL penyimpanan, nama dokumen yang mengandung data pribadi, atau teks yang diekstrak. Lindungi log audit dari modifikasi dan batasi akses hanya untuk tim yang membutuhkannya.
Verifikasi Alur Lengkap
Pengujian keamanan harus mencakup kasus negatif:
- Ubah ID dokumen sambil tetap terautentikasi.
- Gunakan kembali URL pratinjau dari pengguna atau penyewa lain.
- Panggil endpoint halaman, thumbnail, cetak, dan ekspor secara langsung.
- Kedaluwarsa sesi selama pratinjau panjang.
- Hapus izin pengguna saat dokumen terbuka.
- Kirim masukan yang tidak didukung, terlalu besar, rusak, atau dilindungi kata sandi.
- Konfirmasi pekerjaan pembersihan menghapus data yang memenuhi syarat dan melaporkan kegagalan.
- Periksa log, analitik, dan halaman error untuk nilai sensitif.
Otomatisasi kasus stabil dan pertahankan tinjauan manual untuk konfigurasi penyimpanan, kebijakan browser, dan perubahan versi penampil.
Kesimpulan
Integrasi yang sadar keamanan memiliki kepemilikan yang jelas. Doconut menyediakan kemampuan penayangan dokumen yang dijelaskan dalam dokumentasi resmi; aplikasi Anda menyediakan autentikasi, otorisasi, kontrol penyimpanan, retensi, pemantauan, dan respons insiden. Menjaga tanggung jawab tersebut secara eksplisit menghasilkan kontrol yang lebih kuat dan klaim privasi yang lebih jujur.