Bagikan melalui


Akses Data Aman

Untuk menulis kode ADO.NET yang aman, Anda harus memahami mekanisme keamanan yang tersedia di penyimpanan data atau database yang mendasar. Anda juga perlu mempertimbangkan implikasi keamanan fitur atau komponen lain yang mungkin dikandung aplikasi Anda.

Autentikasi, Otorisasi, dan Izin

Saat menyambungkan ke Microsoft SQL Server, Anda dapat menggunakan Autentikasi Windows, juga dikenal sebagai Keamanan Terpadu, yang menggunakan identitas pengguna Windows aktif saat ini ketimbang meneruskan ID pengguna dan kata sandi. Menggunakan autentikasi Windows sangat disarankan karena kredensial pengguna tidak terekspos dalam string koneksi. Jika Anda tidak dapat menggunakan autentikasi Windows untuk menyambungkan ke SQL Server, maka pertimbangkan untuk membuat string koneksi pada waktu pelaksanaan menggunakan SqlConnectionStringBuilder.

Kredensial yang digunakan untuk autentikasi perlu ditangani secara berbeda berdasarkan jenis aplikasi. Misalnya, dalam aplikasi Formulir Windows, pengguna dapat diminta untuk memberikan informasi autentikasi, atau kredensial Windows pengguna dapat digunakan. Namun, aplikasi Web sering mengakses data menggunakan kredensial yang disediakan oleh aplikasi itu sendiri daripada oleh pengguna.

Setelah pengguna diautentikasi, cakupan tindakan mereka bergantung pada izin yang telah diberikan kepada mereka. Selalu ikuti prinsip hak istimewa paling sedikit dan hanya berikan izin yang benar-benar diperlukan.

Untuk informasi selengkapnya, lihat sumber berikut ini:

Sumber daya Deskripsi
Melindungi Informasi Koneksi Menjelaskan praktik dan teknik keamanan terbaik untuk melindungi informasi koneksi, seperti menggunakan konfigurasi yang dilindungi untuk mengenkripsi string koneksi.
Rekomendasi untuk Strategi Akses Data Memberikan rekomendasi untuk mengakses data dan melakukan operasi database.
Penyusun String Koneksi ion Menjelaskan cara membuat string koneksi dari input pengguna pada waktu pelaksanaan.
Ringkasan Keamanan SQL Server Menjelaskan arsitektur keamanan SQL Server.

Perintah Berparameter dan Injeksi SQL

Menggunakan perintah berparameter membantu melindungi dari serangan injeksi SQL, di mana penyerang "menyuntikkan" perintah ke dalam pernyataan SQL yang membahayakan keamanan di server. Perintah berparameter melindungi dari serangan injeksi SQL dengan memastikan bahwa nilai yang diterima dari sumber eksternal diteruskan sebagai nilai saja, dan bukan bagian dari pernyataan Transact-SQL. Akibatnya, perintah Transact-SQL yang dimasukkan ke dalam nilai tidak dijalankan di sumber data. Sebaliknya, mereka dievaluasi hanya sebagai nilai parameter. Selain manfaat keamanan, perintah berparameter menyediakan metode yang nyaman untuk mengatur nilai yang diteruskan dengan pernyataan SQL Transact atau ke prosedur tersimpan.

Untuk informasi selengkapnya tentang menggunakan perintah berparameter, lihat sumber daya berikut ini.

Sumber daya Deskripsi
DataAdapter Parameters Menjelaskan cara menggunakan parameter dengan DataAdapter.
Memodifikasi Data dengan Prosedur Tersimpan Menjelaskan cara menentukan parameter dan mendapatkan nilai yang dikembalikan.
Mengelola Izin dengan Prosedur Tersimpan di SQL Server Menjelaskan cara menggunakan prosedur SQL Server tersimpan untuk merangkum akses data.

Eksploitasi Skrip

Eksploitasi skrip adalah bentuk injeksi lain yang menggunakan karakter berbahaya yang disisipkan ke halaman Web. Browser tidak memvalidasi karakter yang disisipkan dan akan memprosesnya sebagai bagian dari halaman.

Untuk informasi selengkapnya, lihat sumber berikut ini:

Sumber daya Deskripsi
Gambaran Umum Eksploitasi Skrip Menjelaskan cara melindungi dari pembuatan skrip dan eksploitasi pernyataan SQL.

Menyelidiki Serangan

Penyerang sering menggunakan informasi dari pengecualian, seperti nama server, database, atau tabel Anda, untuk memasang serangan pada sistem Anda. Karena pengecualian dapat berisi informasi spesifik tentang aplikasi atau sumber data Anda, Anda dapat membantu menjaga aplikasi dan sumber data Anda lebih terlindungi dengan hanya mengekspos informasi penting kepada klien.

Untuk informasi selengkapnya, lihat sumber berikut ini:

Sumber daya Deskripsi
Menangani dan menampilkan pengecualian di .NET Menjelaskan bentuk dasar penanganan pengecualian terstruktur try/catch/finally.
Praktik Terbaik untuk Pengecualian Menjelaskan praktik terbaik untuk menangani pengecualian.

Melindungi Sumber Data Microsoft Access dan Excel

Microsoft Access dan Microsoft Excel dapat bertindak sebagai penyimpanan data untuk aplikasi ADO.NET saat persyaratan keamanan minimal atau tidak ada. Fitur keamanan mereka efektif untuk gangguan, tetapi tidak boleh diandalkan untuk melakukan lebih dari mencegah meddling oleh pengguna yang tidak terinformasikan. File data fisik untuk Access dan Excel ada di sistem file, dan harus dapat diakses oleh semua pengguna. Hal ini membuat mereka rentan terhadap serangan yang dapat mengakibatkan pencurian atau kehilangan data karena file dapat dengan mudah disalin atau diubah. Ketika keamanan yang kuat diperlukan, gunakan SQL Server atau database berbasis server lain di mana file data fisik tidak dapat dibaca dari sistem file.

Untuk informasi selengkapnya tentang melindungi data Access dan Excel, lihat sumber daya berikut ini.

Sumber daya Deskripsi
Pertimbangan dan Panduan Keamanan untuk Access 2007 Menjelaskan teknik keamanan untuk Access 2007 seperti mengenkripsi file, mengelola kata sandi, mengonversi database ke format ACCDB dan ACCDE baru, dan menggunakan opsi keamanan lainnya.
Pengantar keamanan Access 2010 Menyediakan gambaran umum fitur keamanan yang ditawarkan oleh Access 2010.

Layanan Perusahaan

COM+ berisi model keamanannya sendiri yang bergantung pada akun Windows dan peniruan proses/utas. Namespace System.EnterpriseServices menyediakan wrapper yang memungkinkan aplikasi .NET untuk mengintegrasikan kode terkelola dengan layanan keamanan COM+ melalui kelas ServicedComponent.

Untuk informasi selengkapnya, lihat sumber berikut ini.

Sumber daya Deskripsi
Keamanan Berbasis Peran Membahas cara mengintegrasikan kode terkelola dengan layanan keamanan COM+.

Menginteroperasikan dengan Kode yang Tidak Dikelola

.NET Framework mempromosikan interaksi dengan komponen COM, layanan COM+, pustaka jenis eksternal, dan banyak layanan sistem operasi. Bekerja dengan kode yang tidak dikelola memerlukan langkah keluar dari perimeter keamanan untuk kode terkelola. Kode Anda dan kode apa pun yang memanggilnya harus memiliki izin kode yang tidak dikelola (SecurityPermission dengan bendera UnmanagedCode yang ditentukan). Kode yang tidak dikelola dapat memperkenalkan kerentanan keamanan yang tidak diinginkan ke dalam aplikasi Anda. Oleh karena itu, Anda harus menghindari interoperabilitas dengan kode yang tidak dikelola kecuali benar-benar diperlukan.

Untuk informasi selengkapnya, lihat sumber berikut ini:

Sumber daya Deskripsi
Menginteroperasikan dengan Unmanaged Code Berisi topik yang menjelaskan cara mengekspos komponen COM ke .NET Framework dan cara mengekspos komponen .NET Framework ke COM.
Interoperabilitas COM Tingkat Lanjut Berisi topik lanjutan seperti rakitan interop utama, threading, dan marshalling kustom.

Lihat juga