Ikhtisar keamanan

Mengamankan aplikasi adalah proses yang sedang berlangsung. Tidak akan pernah ada titik di mana pengembang dapat menjamin bahwa aplikasi aman dari semua serangan, karena tidak mungkin untuk memprediksi jenis serangan masa depan apa yang akan dibawa teknologi baru. Sebaliknya, hanya karena belum ada yang menemukan (atau menerbitkan) kelemahan keamanan dalam sistem tidak berarti bahwa tidak ada atau bisa ada. Anda perlu merencanakan keamanan selama fase desain proyek, serta merencanakan bagaimana keamanan akan dipertahankan selama masa pakai aplikasi.

Desain untuk Keamanan

Salah satu masalah terbesar dalam mengembangkan aplikasi yang aman adalah keamanan sering kali merupakan hal yang harus diimplementasikan setelah proyek selesai dengan kode. Tidak membangun keamanan ke dalam aplikasi pada awalnya menyebabkan aplikasi yang tidak aman karena sedikit pemikiran telah diberikan untuk apa yang membuat aplikasi aman.

Implementasi keamanan menit terakhir menyebabkan lebih banyak bug, karena perangkat lunak berhenti di bawah pembatasan baru atau harus ditulis ulang untuk mengakomodasi fungsionalitas yang tidak diantisipasi. Setiap baris kode yang direvisi berisi kemungkinan memperkenalkan bug baru. Untuk alasan ini, Anda harus mempertimbangkan keamanan di awal proses pengembangan sehingga dapat dilanjutkan bersama dengan pengembangan fitur baru.

Pemodelan Ancaman

Anda tidak dapat melindungi sistem dari serangan kecuali Anda memahami semua potensi serangan yang diekspos. Proses mengevaluasi ancaman keamanan, yang disebut pemodelan ancaman, diperlukan untuk menentukan kemungkinan dan ramifikasi pelanggaran keamanan dalam aplikasi ADO.NET Anda.

Pemodelan ancaman terdiri dari tiga langkah tingkat tinggi: memahami tampilan lawan, mencirikan keamanan sistem, dan menentukan ancaman.

Pemodelan ancaman adalah pendekatan berulang untuk menilai kerentanan dalam aplikasi Anda untuk menemukan mereka yang paling berbahaya karena mengekspos data yang paling sensitif. Setelah mengidentifikasi kerentanan, Anda memberi peringkat dalam urutan tingkat keparahan dan membuat serangkaian penanggulangan yang diprioritaskan untuk melawan ancaman.

Untuk informasi selengkapnya, lihat sumber daya berikut:

Sumber daya Deskripsi
Situs Pemodelan Ancaman di Portal Rekayasa Keamanan Sumber daya di halaman ini akan membantu Anda memahami proses pemodelan ancaman dan membangun model ancaman yang dapat Anda gunakan untuk mengamankan aplikasi Anda sendiri

Prinsip Hak Istimewa Terkecil

Saat merancang, membangun, dan menyebarkan aplikasi, Anda harus berasumsi bahwa aplikasi Anda akan diserang. Seringkali serangan ini berasal dari kode berbahaya yang dijalankan dengan izin pengguna yang menjalankan kode. Yang lain dapat berasal dari kode yang disengaja dengan baik yang telah dieksploitasi oleh penyerang. Saat merencanakan keamanan, selalu asumsikan skenario terburuk akan terjadi.

Salah satu tindakan balasan yang dapat Anda gunakan adalah mencoba untuk menetap sebanyak mungkin dinding di sekitar kode Anda dengan menjalankan dengan hak istimewa paling sedikit. Prinsip hak istimewa paling sedikit mengatakan bahwa hak istimewa yang diberikan harus diberikan kepada jumlah kode paling sedikit yang diperlukan untuk durasi waktu terpendek yang diperlukan untuk menyelesaikan pekerjaan.

Praktik terbaik untuk membuat aplikasi yang aman adalah memulai tanpa izin sama sekali dan kemudian menambahkan izin tersempit untuk tugas tertentu yang sedang dilakukan. Sebaliknya, dimulai dengan semua izin dan kemudian menolak masing-masing izin menyebabkan aplikasi yang tidak aman yang sulit diuji dan dipertahankan karena lubang keamanan mungkin ada karena secara tidak sengaja memberikan lebih banyak izin daripada yang diperlukan.

Untuk informasi selengkapnya tentang mengamankan aplikasi Anda, lihat sumber daya berikut:

Sumber daya Deskripsi
Mengamankan Aplikasi Berisi tautan ke topik keamanan umum. Juga berisi tautan ke topik untuk mengamankan aplikasi terdistribusi, aplikasi Web, aplikasi seluler, dan aplikasi desktop.

Keamanan Akses Kode (CAS)

Keamanan akses kode (CAS) adalah mekanisme yang membantu membatasi akses yang dimiliki kode untuk sumber daya dan operasi yang dilindungi. Dalam .NET Framework, CAS melakukan fungsi berikut:

  • Menentukan izin dan set izin yang mewakili hak untuk mengakses berbagai sumber daya sistem.

  • Memungkinkan administrator untuk mengonfigurasi kebijakan keamanan dengan mengaitkan sekumpulan izin dengan grup kode (grup kode).

  • Memungkinkan kode untuk meminta izin yang diperlukan untuk menjalankan, serta izin yang akan berguna untuk dimiliki, dan menentukan izin mana yang tidak boleh dimiliki kode.

  • Memberikan izin kepada setiap assembly yang dimuat, berdasarkan izin yang diminta oleh kode dan pada operasi yang diizinkan oleh kebijakan keamanan.

  • Memungkinkan kode untuk menuntut bahwa pemanggilnya memiliki izin khusus.

  • Memungkinkan kode untuk menuntut bahwa pemanggilnya memiliki tanda tangan digital, sehingga hanya memungkinkan penelepon dari organisasi atau situs tertentu untuk memanggil kode yang dilindungi.

  • Memberlakukan pembatasan kode pada durasi dengan membandingkan izin yang diberikan dari setiap penelepon pada tumpukan panggilan dengan izin yang harus dimiliki pemanggil.

Untuk meminimalkan jumlah kerusakan yang dapat terjadi jika serangan berhasil, pilih konteks keamanan untuk kode Anda yang hanya memberikan akses ke sumber daya yang diperlukan untuk menyelesaikan pekerjaannya dan tidak lebih.

Untuk informasi selengkapnya, lihat sumber daya berikut:

Sumber daya Deskripsi
Keamanan Akses Kode dan ADO.NET Menjelaskan interaksi antara keamanan akses kode, keamanan berbasis peran, dan lingkungan yang tepercaya sebagian dari perspektif aplikasi ADO.NET.
Keamanan Akses Kode Berisi tautan ke topik tambahan yang menjelaskan CAS dalam .NET Framework.

Keamanan Database

Prinsip hak istimewa paling sedikit juga berlaku untuk sumber data Anda. Beberapa panduan umum untuk keamanan database meliputi:

  • Buat akun dengan hak istimewa serendah mungkin.

  • Jangan izinkan pengguna mengakses akun administratif hanya untuk membuat kode berfungsi.

  • Jangan mengembalikan pesan kesalahan sisi server ke aplikasi klien.

  • Validasi semua input di klien dan server.

  • Gunakan perintah berparameter dan hindari pernyataan SQL dinamis.

  • Aktifkan audit dan pengelogan keamanan untuk database yang Anda gunakan sehingga Anda diberi tahu tentang pelanggaran keamanan apa pun.

Untuk informasi selengkapnya, lihat sumber daya berikut:

Sumber daya Deskripsi
Keamanan SQL Server Memberikan ringkasan tentang keamanan SQL Server dengan skenario aplikasi yang memberikan panduan untuk membuat aplikasi ADO.NET aman yang menargetkan SQL Server.
Rekomendasi untuk Strategi Akses Data Memberikan rekomendasi untuk mengakses data dan melakukan operasi database.

Kebijakan dan Administrasi Keamanan

Mengelola kebijakan keamanan akses kode (CAS) secara tidak benar dapat berpotensi menciptakan kelemahan keamanan. Setelah aplikasi disebarkan, teknik untuk memantau keamanan harus digunakan dan risiko dievaluasi saat ancaman baru muncul.

Untuk informasi selengkapnya, lihat sumber daya berikut:

Sumber daya Deskripsi
Manajemen Kebijakan Keamanan Menyediakan informasi tentang membuat dan mengelola kebijakan keamanan.
Praktik Terbaik Kebijakan Keamanan Menyediakan tautan yang menjelaskan cara mengelola kebijakan keamanan.

Lihat juga