Mengamankan aplikasi ClickOnce

Aplikasi ClickOnce bergantung pada batasan keamanan akses kode dalam .NET Framework untuk membantu membatasi akses yang dimiliki kode ke sumber daya dan operasi yang dilindungi. Untuk alasan itu, penting bagi Anda untuk memahami implikasi keamanan akses kode untuk menulis aplikasi ClickOnce Anda. Aplikasi Anda dapat menggunakan Kepercayaan Penuh atau menggunakan zona parsial, seperti zona Internet dan Intranet, untuk membatasi akses.

Selain itu, ClickOnce menggunakan sertifikat untuk memverifikasi keaslian penerbit aplikasi, dan untuk menandatangani manifes aplikasi dan penyebaran untuk membuktikan bahwa file belum dirusak. Penandatanganan adalah langkah opsional, yang memudahkan untuk mengubah file aplikasi setelah manifes dibuat. Akan tetapi, tanpa manifes yang ditandatangani, sulit untuk memastikan bahwa alat penginstal aplikasi tidak dirusak dalam serangan keamanan man-in-the-middle. Untuk alasan ini, kami merekomendasikan Anda menandatangani manifes aplikasi dan penyebaran untuk membantu mengamankan aplikasi Anda.

Zona

Aplikasi yang disebarkan menggunakan teknologi ClickOnce dibatasi untuk serangkaian izin dan tindakan yang ditentukan oleh zona keamanan. Zona keamanan ditentukan dalam Internet Explorer, dan didasarkan pada lokasi aplikasi. Tabel berikut mencantumkan izin default berdasarkan lokasi penyebaran:

Lokasi Penyebaran Zona Keamanan
Jalankan dari Web Zona Internet
Pasang dari Web Zona Internet
Pasang dari berbagi file jaringan Zona Intranet Lokal
Pasang dari CD-ROM Kepercayaan Penuh

Izin default didasarkan pada lokasi tempat versi asal aplikasi disebarkan; pembaruan untuk aplikasi akan mewarisi izin tersebut. Jika aplikasi dikonfigurasi untuk memeriksa pembaruan dari lokasi Web atau jaringan dan versi yang lebih baru tersedia, penginstalan asal dapat menerima izin untuk zona Internet atau Intranet alih-alih izin kepercayaan penuh. Untuk mencegah pengguna diminta, administrator sistem dapat menentukan kebijakan penyebaran ClickOnce yang menentukan penerbit aplikasi tertentu sebagai sumber tepercaya. Untuk komputer tempat kebijakan ini disebarkan, izin akan diberikan secara otomatis dan pengguna tidak akan diminta. Untuk informasi selengkapnya, lihat Ringkasan Penyebaran Aplikasi Tepercaya. Untuk mengonfigurasi penyebaran aplikasi tepercaya, sertifikat dapat dipasang ke tingkat komputer atau perusahaan. Untuk informasi selengkapnya, lihat Cara: Menambahkan Penerbit Tepercaya ke Komputer Klien untuk Aplikasi ClickOnce.

Catatan

Di ClickOnce untuk .NET Core dan .NET 5 atau yang lebih baru, fitur ini tidak didukung. Untuk informasi selengkapnya, lihat ClickOnce untuk .NET.

Kebijakan keamanan akses kode

Izin untuk aplikasi ditentukan oleh pengaturan dalam elemen <trustInfo> Elemen dari manifes aplikasi. Visual Studio secara otomatis membuat informasi ini berdasarkan pengaturan pada halaman properti Keamanan proyek. Aplikasi ClickOnce hanya diberikan izin tertentu yang dimintanya. Misalnya, di mana akses file memerlukan izin kepercayaan penuh, jika aplikasi meminta izin akses file, aplikasi hanya akan diberikan izin akses file, bukan izin kepercayaan penuh. Saat mengembangkan aplikasi ClickOnce, Anda harus memastikan bahwa Anda hanya meminta izin tertentu yang dibutuhkan aplikasi. Umumnya, Anda dapat menggunakan zona Internet atau Intranet Lokal untuk membatasi aplikasi Anda ke kepercayaan parsial. Untuk informasi selengkapnya, lihat Cara: Mengatur zona keamanan untuk aplikasi ClickOnce. Jika aplikasi Anda memerlukan izin kustom, Anda dapat membuat zona kustom. Untuk informasi selengkapnya, lihat Cara: Mengatur izin kustom untuk aplikasi ClickOnce.

Catatan

Di ClickOnce untuk .NET Core dan .NET 5 atau yang lebih baru, fitur ini tidak didukung. Untuk informasi selengkapnya, lihat ClickOnce untuk .NET.

Menyertakan izin yang bukan bagian dari izin default yang diatur untuk zona tempat aplikasi disebarkan akan menyebabkan pengguna akhir diminta untuk memberikan izin pada waktu penginstalan atau pembaruan. Untuk mencegah pengguna diminta, administrator sistem dapat menentukan kebijakan penyebaran ClickOnce yang menentukan penerbit aplikasi tertentu sebagai sumber tepercaya. Pada komputer tempat kebijakan ini disebarkan, izin akan secara otomatis diberikan dan pengguna tidak akan diminta.

Sebagai pengembang, Anda bertanggung jawab untuk memastikan bahwa aplikasi Anda akan berjalan dengan izin yang sesuai. Jika aplikasi meminta izin di luar zona selama durasi, pengecualian keamanan mungkin muncul. Visual Studio memungkinkan Anda untuk men-debug aplikasi Anda di zona keamanan target dan memberikan bantuan dalam mengembangkan aplikasi yang aman. Untuk informasi selengkapnya, lihat Men-debug aplikasi ClickOnce yang menggunakan System.Deployment.Application.

Untuk informasi selengkapnya tentang keamanan akses kode dan ClickOnce, lihat Keamanan akses kode untuk aplikasi ClickOnce.

Sertifikat penandatanganan kode

Untuk menerbitkan aplikasi dengan menggunakan penyebaran ClickOnce, Anda dapat menandatangani manifes aplikasi dan penyebaran untuk aplikasi dengan menggunakan pasangan kunci publik/privat. Alat untuk menandatangani manifes tersedia di halaman PenandatangananPerancang Proyek. Untuk informasi selengkapnya, lihat Halaman Penandatanganan, Perancang Proyek.

Setelah manifes ditandatangani, informasi penerbit berdasarkan tanda tangan Kode autentikasi akan ditampilkan kepada pengguna dalam kotak dialog izin selama penginstalan, untuk menunjukkan kepada pengguna bahwa aplikasi berasal dari sumber tepercaya.

Untuk informasi selengkapnya tentang ClickOnce dan sertifikat, lihat ClickOnce dan Kode autentikasi.

Autentikasi berbasis formulir ASP.NET

Jika Anda ingin mengontrol penyebaran mana yang dapat diakses tiap pengguna, Anda sebaiknya tidak mengaktifkan akses anonim ke aplikasi ClickOnce yang disebarkan di server Web. Sebaliknya, Anda akan mengaktifkan akses pengguna ke penyebaran yang telah Anda pasang berdasarkan identitas pengguna menggunakan autentikasi Windows.

ClickOnce tidak mendukung autentikasi berbasis formulir ASP.NET karena menggunakan cookie persisten; ini menimbulkan risiko keamanan karena berada dalam cache Internet Explorer dan dapat diretas. Oleh karena itu, jika Anda menyebarkan aplikasi ClickOnce, skenario autentikasi apa pun selain autentikasi Windows tidak didukung.

Meneruskan argumen

Pertimbangan keamanan tambahan terjadi jika Anda harus meneruskan argumen ke dalam aplikasi ClickOnce. ClickOnce memungkinkan pengembang untuk menyediakan string kueri ke aplikasi yang disebarkan melalui Web. String kueri mengambil bentuk serangkaian pasangan nama-nilai di akhir URL yang digunakan untuk memulai aplikasi:

http://servername.adatum.com/WindowsApp1.application?username=joeuser

Secara default, argumen string kueri dinonaktifkan. Untuk mengaktifkannya, atribut trustUrlParameters harus diatur dalam manifes penyebaran aplikasi. Nilai ini dapat diatur dari Visual Studio dan dari MageUI.exe. Untuk langkah-langkah mendetail tentang cara mengaktifkan penerusan string kueri, lihat Cara: Mengambil informasi string kueri di aplikasi ClickOnce online.

Anda sebaiknya tidak meneruskan argumen yang diambil melalui string kueri ke database atau ke baris perintah tanpa memeriksa argumen untuk memastikan bahwa argumen tersebut aman. Argumen tidak aman adalah argumen yang menyertakan database atau karakter escape baris perintah yang dapat memungkinkan pengguna berbahaya memanipulasi aplikasi Anda untuk menjalankan perintah arbitrer.

Catatan

Argumen string-kueri adalah satu-satunya cara untuk meneruskan argumen ke aplikasi ClickOnce saat memulai. Anda tidak dapat meneruskan argumen ke aplikasi ClickOnce dari baris perintah.

Menyebarkan rakitan yang dikaburkan

Visual Studio menyertakan PreEmptive Protection - Dotfuscator Community gratis, yang dapat Anda gunakan untuk melindungi aplikasi ClickOnce Anda melalui pengaburan kode dan langkah perlindungan aktif. Untuk detailnya, silakan lihat bagian ClickOnce Panduan Pengguna Dotfuscator Community.