Sangat mudah untuk meluangkan waktu untuk mempelajari sesuatu di antara tugas-tugas pengembangan yang berat. Saya menemukan ada beberapa contoh konten System.Security di mesin. Saya belum pernah menggunakan namespace ini sebelumnya, jadi saya hanya menggunakannya untuk mempelajarinya. Karena ini bukan kajian yang sistematis, maka tidak mudah untuk mengaturnya. Setelah dipikir-pikir, saya akan menjelaskannya dengan contoh.
1. Tetapkan izin
1[FileIOPermission(SecurityAction.Demand, Write= "C:\temp.txt")]
2 Aplikasi kelas publik: System.Windows.Forms.Form
3{
4 //dihilangkan
5}
FileIOPermissionAttribute didefinisikan di System.Security.Permissions. Ini mewarisi dari SecurityAttribute. Dalam contoh ini, diperlukan izin menulis pada file C:temp.txt saat menggunakan kelas Aplikasi.
Dokumentasi .net framework menyatakan hal berikut tentang persyaratan keamanan: "Untuk memastikan bahwa hanya penelepon yang telah diberikan izin khusus yang dapat memanggil kode Anda, Anda dapat mendeklarasikan atau menegakkan bahwa penelepon kode Anda memiliki izin khusus. Atau kumpulan izin. Persyaratan menyebabkan runtime untuk melakukan pemeriksaan keamanan, sehingga menerapkan pembatasan pada kode panggilan. Selama pemeriksaan keamanan, runtime menelusuri tumpukan panggilan, memeriksa izin setiap pemanggil di tumpukan, dan menentukan apakah izin yang diminta telah diberikan penelepon. Jika penelepon ditemukan tidak memiliki izin yang diperlukan, pemeriksaan keamanan gagal dan SecurityException diberikan
. SecurityAction.Demand dapat bertindak pada suatu kelas atau metode, dalam hal ini ia bertindak pada suatu kelas. Write adalah salah satu properti FileIOPermission. Properti lain yang umum digunakan termasuk Read, Append, All, dll.
Ada juga beberapa nilai dalam enumerasi SecurityAction yang berlaku pada majelis. Misalnya, contoh berikut:
[assembly:SecurityPermission(SecurityAction.RequestMinimum,UnmanagedCode=true)]
SecurityAction.RequestMinimum adalah izin minimum untuk menjalankan permintaan. Baris ini mengharuskan Majelis mengizinkan panggilan ke kode yang tidak dikelola.
Selain metode deklaratif, Anda juga bisa menggunakan metode wajib. Kode berikut:
1FileIOPermission filePerm = new FileIOPermission(FileIOPermissionAccess.AllAccess, "C:\temp.txt");
2 coba
3{
4 filePerm.Permintaan();
5
6 // Kode untuk mengakses file ada di sini
7}
8catch(SecurityExceptionexcep)
9{
10 Kotak Pesan.Tampilkan (kecuali.Pesan);
11 kembali;
12}
13
2. Manajemen peran pengguna
Manajemen pengguna dan peran mereka digunakan dalam banyak program. Saat ini, asp.net 2.0 telah meningkatkan aspek ini secara signifikan, dan pengembang dapat membuat aplikasi yang sangat bagus tanpa mengetahui banyak tentang teknologi. Namun untuk aplikasi Windows Form, banyak tempat yang masih perlu diatur oleh programmer sendiri.
Dengan asumsi bahwa kita sudah mengetahui nama pengguna dan peran yang dimilikinya, kita dapat mengatur Prinsipal thread saat ini seperti ini:
1GenericIdentity genIdent = new GenericIdentity(userName);
2GenericPrincipal genPrin = GenericPrincipal baru(genIdent, peran);
3Thread.CurrentPrincipal = genPrin;
4
Lalu kami memiliki tiga cara untuk memverifikasi peran pengguna.
Metode pertama adalah dengan menggunakan metode GenericPrincipal.IsInRole:
1GenericPrincipal currentPrin = Thread.CurrentPrincipal sebagai GenericPrincipal;
2
3if (currentPrin != null && currentPrin.IsInRole("Manajer"))
4{
5 //dihilangkan
6}
7
Metode kedua adalah dengan menggunakan kelas PrincipalPermission, yang mirip dengan metode wajib dalam pengaturan izin:
1PrincipalPermission prinPerm = new PrincipalPermission(null, "Manager");
2
3 coba
4{
5 printPerm.Permintaan();
6
7 //melakukan sesuatu
8}
9 menangkap
10{
11 //penanganan kesalahan
12}
Metode ketiga mirip dengan metode deklarasi dalam pengaturan izin:
1private void DecPermButton_Click(object sender, System.EventArgs e)
2{
3 mencoba
4 {
5 performManagerAction();
6 // melakukan sesuatu
7}
8 tangkapan
9 {
10 // penanganan kesalahan
11 }
12}
13
14[Izin Utama(SecurityAction.Demand, Role="Manager")]
15batalkan performManagerAction()
16{
17}
Hal penting lainnya tentang keamanan adalah enkripsi. Saya tidak punya waktu untuk menulis hari ini, saya akan membicarakannya di lain hari.