Bagikan melalui


Melindungi String Koneksi dan Informasi Konfigurasi Lainnya (C#)

oleh Scott Mitchell

Unduh PDF

Aplikasi ASP.NET biasanya menyimpan informasi konfigurasi dalam file Web.config. Beberapa informasi ini sensitif dan menjamin perlindungan. Secara default file ini tidak akan dilayani ke pengunjung situs Web, tetapi administrator atau peretas mungkin mendapatkan akses ke sistem file server Web dan melihat isi file. Dalam tutorial ini kita mempelajari bahwa ASP.NET 2.0 memungkinkan kita untuk melindungi informasi sensitif dengan mengenkripsi bagian dari file Web.config.

Pendahuluan

Informasi konfigurasi untuk aplikasi ASP.NET umumnya disimpan dalam file XML bernama Web.config. Selama tutorial ini, kami telah memperbarui Web.config beberapa kali. Saat membuat Northwind Typed DataSet dalam tutorial pertama, misalnya, informasi string koneksi secara otomatis ditambahkan ke Web.config di bagian <connectionStrings>. Kemudian, dalam tutorial Halaman Master dan Navigasi Situs , kami memperbarui Web.configsecara manual , menambahkan elemen yang <pages> menunjukkan bahwa semua halaman ASP.NET dalam proyek kami harus menggunakan DataWebControls Tema.

Karena Web.config mungkin berisi data sensitif seperti string koneksi, penting bahwa konten Web.config disimpan aman dan disembunyikan dari pemirsa yang tidak sah. Secara default, permintaan HTTP apa pun ke file dengan .config ekstensi ditangani oleh mesin ASP.NET, yang mengembalikan pesan Jenis halaman ini tidak dilayani yang ditunjukkan pada Gambar 1. Ini berarti bahwa pengunjung tidak dapat melihat konten file Anda Web.config hanya dengan memasukkan http://www.YourServer.com/Web.config ke bilah Alamat browser mereka.

Mengunjungi Web.config Melalui Browser Menghasilkan Pesan: Halaman jenis ini tidak dilayani

Gambar 1: Mengunjungi Web.config melalui browser mengembalikan pesan 'Halaman jenis ini tidak dilayani' (Klik untuk melihat gambar ukuran penuh)

Tetapi bagaimana jika penyerang dapat menemukan beberapa eksploitasi lain yang memungkinkannya untuk melihat konten file Anda Web.config ? Apa yang dapat dilakukan penyerang dengan informasi ini, dan langkah-langkah apa yang dapat diambil untuk melindungi informasi sensitif lebih lanjut dalam Web.config? Untungnya, sebagian besar bagian di Web.config tidak berisi informasi sensitif. Bahaya apa yang dapat dilakukan penyerang jika mereka mengetahui nama Tema default yang digunakan oleh halaman ASP.NET Anda?

Namun, bagian tertentu Web.config berisi informasi sensitif yang mungkin mencakup string koneksi, nama pengguna, kata sandi, nama server, kunci enkripsi, dan sebagainya. Informasi ini biasanya ditemukan di bagian berikut Web.config :

  • <appSettings>
  • <connectionStrings>
  • <identity>
  • <sessionState>

Dalam tutorial ini kita akan melihat teknik untuk melindungi informasi konfigurasi sensitif tersebut. Seperti yang akan kita lihat, .NET Framework versi 2.0 menyertakan sistem konfigurasi yang dilindungi yang membuat mengenkripsi dan mendekripsi bagian konfigurasi yang dipilih secara terprogram menjadi mudah.

Catatan

Tutorial ini menyimpulkan dengan melihat rekomendasi Microsoft untuk menyambungkan ke database dari aplikasi ASP.NET. Selain mengenkripsi string koneksi, Anda dapat membantu mengeraskan sistem Anda dengan memastikan bahwa Anda terhubung ke database dengan cara yang aman.

Langkah 1: Menjelajahi Opsi Konfigurasi Terproteksi ASP.NET 2.0 s

ASP.NET 2.0 mencakup sistem konfigurasi yang dilindungi untuk mengenkripsi dan mendekripsi informasi konfigurasi. Ini termasuk metode dalam .NET Framework yang dapat digunakan untuk mengenkripsi atau mendekripsi informasi konfigurasi secara terprogram. Sistem konfigurasi yang dilindungi menggunakan model penyedia yang memungkinkan pengembang untuk memilih implementasi kriptografi apa yang digunakan.

.NET Framework dikirim dengan dua penyedia konfigurasi yang dilindungi:

Karena sistem konfigurasi yang dilindungi mengimplementasikan pola desain penyedia, dimungkinkan untuk membuat penyedia konfigurasi yang dilindungi Anda sendiri dan menyambungkannya ke aplikasi Anda. Lihat Menerapkan Penyedia Konfigurasi Terproteksi untuk informasi selengkapnya tentang proses ini.

Penyedia RSA dan DPAPI menggunakan kunci untuk rutinitas enkripsi dan dekripsi mereka, dan kunci ini dapat disimpan di tingkat komputer atau pengguna. Kunci tingkat mesin sangat ideal untuk skenario di mana aplikasi web berjalan di server khususnya sendiri atau jika ada beberapa aplikasi di server yang perlu berbagi informasi terenkripsi. Kunci tingkat pengguna adalah opsi yang lebih aman di lingkungan hosting bersama di mana aplikasi lain di server yang sama seharusnya tidak dapat mendekripsi bagian konfigurasi yang dilindungi aplikasi Anda.

Dalam tutorial ini, contoh kami akan menggunakan penyedia DPAPI dan kunci tingkat mesin. Secara khusus, kita akan melihat mengenkripsi <connectionStrings> bagian di Web.config, meskipun sistem konfigurasi yang dilindungi dapat digunakan untuk mengenkripsi sebagian besar bagian mana pun Web.config . Untuk informasi tentang menggunakan kunci tingkat pengguna atau menggunakan penyedia RSA, lihat sumber daya di bagian Bacaan Lebih Lanjut di akhir tutorial ini.

Catatan

Penyedia RSAProtectedConfigurationProvider dan DPAPIProtectedConfigurationProvider terdaftar dalam machine.config file dengan nama RsaProtectedConfigurationProvider penyedia dan DataProtectionConfigurationProvider, masing-masing. Saat mengenkripsi atau mendekripsi informasi konfigurasi, kita perlu memberikan nama penyedia yang sesuai (RsaProtectedConfigurationProvider atau DataProtectionConfigurationProvider) daripada nama jenis aktual (RSAProtectedConfigurationProvider dan DPAPIProtectedConfigurationProvider). Anda dapat menemukan machine.config file di $WINDOWS$\Microsoft.NET\Framework\version\CONFIG folder .

Langkah 2: Mengenkripsi dan Mendekripsi Bagian Konfigurasi Secara Terprogram

Dengan beberapa baris kode, kita dapat mengenkripsi atau mendekripsi bagian konfigurasi tertentu menggunakan penyedia tertentu. Kode, seperti yang akan kita lihat segera, hanya perlu mereferensikan bagian konfigurasi yang sesuai secara terprogram, memanggil metode atau ProtectSection , UnprotectSection lalu memanggil Save metode untuk mempertahankan perubahan. Selain itu, .NET Framework menyertakan utilitas baris perintah bermanfaat yang dapat mengenkripsi dan mendekripsi informasi konfigurasi. Kami akan menjelajahi utilitas baris perintah ini di Langkah 3.

Untuk mengilustrasikan melindungi informasi konfigurasi secara terprogram, mari kita buat halaman ASP.NET yang menyertakan tombol untuk mengenkripsi dan mendekripsi <connectionStrings> bagian di Web.config.

Mulailah dengan membuka EncryptingConfigSections.aspx halaman di AdvancedDAL folder. Seret kontrol TextBox dari Kotak Alat ke Perancang, atur propertinya ID ke WebConfigContents, propertinya TextMode ke MultiLine, dan propertinya WidthRows masing-masing menjadi 95% dan 15. Kontrol TextBox ini akan menampilkan konten Web.config yang memungkinkan kita untuk dengan cepat melihat apakah konten dienkripsi atau tidak. Tentu saja, dalam aplikasi nyata Anda tidak akan pernah ingin menampilkan konten Web.config.

Di bawah Kotak Teks, tambahkan dua kontrol Tombol bernama EncryptConnStrings dan DecryptConnStrings. Atur properti Teks mereka ke Enkripsi String Koneksi dan Dekripsi String Koneksi .

Pada titik ini layar Anda akan terlihat mirip dengan Gambar 2.

Cuplikan layar memperlihatkan Visual Studio dibuka ke halaman EncryptingConfigSections.aspx, yang memiliki TextBox baru dan dua kontrol Tombol.

Gambar 2: Tambahkan TextBox dan Kontrol Web Dua Tombol ke Halaman (Klik untuk melihat gambar ukuran penuh)

Selanjutnya, kita perlu menulis kode yang memuat dan menampilkan konten Web.config di WebConfigContents TextBox saat halaman pertama kali dimuat. Tambahkan kode berikut ke halaman s code-behind class. Kode ini menambahkan metode bernama DisplayWebConfig dan memanggilnya dari penanganan Page_Load aktivitas ketika Page.IsPostBack adalah false:

protected void Page_Load(object sender, EventArgs e)
{
    // On the first page visit, call DisplayWebConfig method
    if (!Page.IsPostBack)
        DisplayWebConfig();
}
private void DisplayWebConfig()
{
    // Reads in the contents of Web.config and displays them in the TextBox
    StreamReader webConfigStream = 
        File.OpenText(Path.Combine(Request.PhysicalApplicationPath, "Web.config"));
    string configContents = webConfigStream.ReadToEnd();
    webConfigStream.Close();
    WebConfigContents.Text = configContents;
}

Metode ini DisplayWebConfig menggunakan File kelas untuk membuka file aplikasi Web.config , StreamReader kelas untuk membaca kontennya ke dalam string, dan Path kelas untuk menghasilkan jalur fisik ke Web.config file. Ketiga kelas ini semuanya ditemukan di System.IO namespace. Akibatnya, Anda perlu menambahkan usingSystem.IO pernyataan ke bagian atas kelas code-behind atau, atau, awali nama kelas ini dengan System.IO. .

Selanjutnya, kita perlu menambahkan penanganan aktivitas untuk dua peristiwa Kontrol Click tombol dan menambahkan kode yang diperlukan untuk mengenkripsi dan mendekripsi <connectionStrings> bagian menggunakan kunci tingkat komputer dengan penyedia DPAPI. Dari Perancang, klik dua kali setiap Tombol untuk menambahkan Click penanganan aktivitas di kelas code-behind lalu tambahkan kode berikut:

protected void EncryptConnStrings_Click(object sender, EventArgs e)
{
    // Get configuration information about Web.config
    Configuration config = 
        WebConfigurationManager.OpenWebConfiguration(Request.ApplicationPath);
    // Let's work with the <connectionStrings> section
    ConfigurationSection connectionStrings = config.GetSection("connectionStrings");
    if (connectionStrings != null)
        // Only encrypt the section if it is not already protected
        if (!connectionStrings.SectionInformation.IsProtected)
        {
            // Encrypt the <connectionStrings> section using the 
            // DataProtectionConfigurationProvider provider
            connectionStrings.SectionInformation.ProtectSection(
                "DataProtectionConfigurationProvider");
            config.Save();
            
            // Refresh the Web.config display
            DisplayWebConfig();
        }
}
protected void DecryptConnStrings_Click(object sender, EventArgs e)
{
    // Get configuration information about Web.config
    Configuration config = 
        WebConfigurationManager.OpenWebConfiguration(Request.ApplicationPath);
    // Let's work with the <connectionStrings> section
    ConfigurationSection connectionStrings = 
        config.GetSection("connectionStrings");
    if (connectionStrings != null)
        // Only decrypt the section if it is protected
        if (connectionStrings.SectionInformation.IsProtected)
        {
            // Decrypt the <connectionStrings> section
            connectionStrings.SectionInformation.UnprotectSection();
            config.Save();
            // Refresh the Web.config display
            DisplayWebConfig();
        }
}

Kode yang digunakan dalam dua penanganan aktivitas hampir identik. Keduanya memulai dengan mendapatkan informasi tentang file aplikasi Web.config saat ini melalui kelas WebConfigurationManager metode OpenWebConfiguration. Metode ini mengembalikan file konfigurasi web untuk jalur virtual yang ditentukan. Selanjutnya, bagian Web.config file s <connectionStrings> diakses melalui Configuration metode kelas sGetSection(sectionName), yang mengembalikan ConfigurationSection objek.

Objek ConfigurationSection menyertakan SectionInformation properti yang menyediakan informasi dan fungsionalitas tambahan mengenai bagian konfigurasi. Seperti yang ditunjukkan oleh kode di atas, kita dapat menentukan apakah bagian konfigurasi dienkripsi dengan memeriksa SectionInformation properti properti s IsProtected . Selain itu, bagian dapat dienkripsi atau didekripsi melalui SectionInformation properti dan ProtectSection(provider)UnprotectSection metode.

Metode ProtectSection(provider) ini menerima sebagai input string yang menentukan nama penyedia konfigurasi yang dilindungi untuk digunakan saat mengenkripsi. Di handler EncryptConnString peristiwa Tombol, kami meneruskan DataProtectionConfigurationProvider ke dalam ProtectSection(provider) metode sehingga penyedia DPAPI digunakan. Metode ini UnprotectSection dapat menentukan penyedia yang digunakan untuk mengenkripsi bagian konfigurasi dan oleh karena itu tidak memerlukan parameter input apa pun.

Setelah memanggil ProtectSection(provider) metode atau UnprotectSection , Anda harus memanggil Configuration metode objek s Save untuk mempertahankan perubahan. Setelah informasi konfigurasi dienkripsi atau didekripsi dan perubahan disimpan, kami memanggil DisplayWebConfig untuk memuat konten yang diperbarui Web.config ke dalam kontrol TextBox.

Setelah Anda memasukkan kode di atas, uji dengan mengunjungi EncryptingConfigSections.aspx halaman melalui browser. Anda awalnya akan melihat halaman yang mencantumkan konten Web.config dengan <connectionStrings> bagian yang ditampilkan dalam teks biasa (lihat Gambar 3).

Cuplikan layar memperlihatkan halaman EncryptingConfigSections.aspx yang dimuat di browser web.

Gambar 3: Tambahkan TextBox dan Kontrol Web Dua Tombol ke Halaman (Klik untuk melihat gambar ukuran penuh)

Sekarang klik tombol Enkripsi String Koneksi. Jika validasi permintaan diaktifkan, markup yang diposting kembali dari WebConfigContents TextBox akan menghasilkan HttpRequestValidationException, yang menampilkan pesan, Nilai yang berpotensi berbahaya Request.Form terdeteksi dari klien. Validasi permintaan, yang diaktifkan secara default di ASP.NET 2.0, melarang postback yang menyertakan HTML yang tidak dikodekan dan dirancang untuk membantu mencegah serangan injeksi skrip. Pemeriksaan ini dapat dinonaktifkan di tingkat halaman atau aplikasi. Untuk menonaktifkannya untuk halaman ini, atur pengaturan ke ValidateRequestfalse@Page dalam direktif. Direktif @Page ditemukan di bagian atas markup deklaratif halaman.

<%@ Page ValidateRequest="False" ... %>

Untuk informasi selengkapnya tentang validasi permintaan, tujuannya, cara menonaktifkannya di tingkat halaman dan aplikasi, serta cara mengodekan markup HTML, lihat Validasi Permintaan - Mencegah Serangan Skrip.

Setelah menonaktifkan validasi permintaan untuk halaman, coba klik tombol Enkripsi String Koneksi lagi. Pada postback, file konfigurasi akan diakses dan bagiannya <connectionStrings> dienkripsi menggunakan penyedia DPAPI. TextBox kemudian diperbarui untuk menampilkan konten baru Web.config . Seperti yang ditunjukkan <connectionStrings> oleh Gambar 4, informasi sekarang dienkripsi.

Mengklik Tombol untuk Mengenkripsi String Koneksi akan Mengenkripsi Bagian <connectionString>.

Gambar 4: Mengklik tombol Enkripsi Rangkaian Koneksi mengenkripsi bagian <connectionString> (Klik untuk melihat gambar ukuran penuh)

Bagian terenkripsi <connectionStrings> yang dihasilkan di komputer saya mengikuti, meskipun beberapa konten dalam <CipherData> elemen telah dihapus untuk brevity:

<connectionStrings 
    configProtectionProvider="DataProtectionConfigurationProvider">
  <EncryptedData>
    <CipherData>
      <CipherValue></CipherValue>
    </CipherData>
  </EncryptedData>
</connectionStrings>

Catatan

Elemen <connectionStrings> menentukan penyedia yang digunakan untuk melakukan enkripsi (DataProtectionConfigurationProvider). Informasi ini digunakan oleh UnprotectSection metode ketika tombol Dekripsi String Koneksi diklik.

Ketika informasi string koneksi diakses dari Web.config - baik berdasarkan kode yang kami tulis, dari kontrol SqlDataSource, atau kode yang dihasilkan secara otomatis dari TableAdapters di Set Data Yang Diketik - kode tersebut secara otomatis didekripsi. Singkatnya, kita tidak perlu menambahkan kode atau logika tambahan untuk mendekripsi bagian terenkripsi <connectionString> . Untuk menunjukkan hal ini, kunjungi salah satu tutorial sebelumnya saat ini, seperti tutorial Tampilan Sederhana dari bagian Pelaporan Dasar (~/BasicReporting/SimpleDisplay.aspx). Seperti yang ditunjukkan Gambar 5, tutorial berfungsi persis seperti yang kita harapkan, menunjukkan bahwa informasi string koneksi terenkripsi sedang didekripsi secara otomatis oleh halaman ASP.NET.

Lapisan Akses Data Secara Otomatis Mendekripsi Informasi String Koneksi

Gambar 5: Lapisan Akses Data Secara Otomatis Mendekripsi Informasi String Koneksi (Klik untuk melihat gambar ukuran penuh)

Untuk mengembalikan bagian <connectionStrings> kembali ke representasi teks biasanya, klik tombol Dekripsi String Koneksi. Pada postback, Anda akan melihat string koneksi dalam Web.config teks biasa. Pada titik ini layar Anda akan terlihat seperti saat pertama kali mengunjungi halaman ini (lihat di Gambar 3).

Langkah 3: Mengenkripsi Bagian Konfigurasi Menggunakan aspnet_regiis.exe

.NET Framework menyertakan berbagai alat baris perintah dalam $WINDOWS$\Microsoft.NET\Framework\version\ folder. Dalam tutorial Menggunakan Dependensi Cache SQL , misalnya, kita melihat menggunakan aspnet_regsql.exe alat baris perintah untuk menambahkan infrastruktur yang diperlukan untuk dependensi cache SQL. Alat baris perintah lain yang berguna dalam folder ini adalah alat Pendaftaran IIS ASP.NET (aspnet_regiis.exe). Seperti namanya, alat Pendaftaran IIS ASP.NET terutama digunakan untuk mendaftarkan aplikasi ASP.NET 2.0 dengan server Web kelas profesional Microsoft, IIS. Selain fitur terkait IIS-nya, alat Pendaftaran IIS ASP.NET juga dapat digunakan untuk mengenkripsi atau mendekripsi bagian konfigurasi yang ditentukan di Web.config.

Pernyataan berikut menunjukkan sintaks umum yang digunakan untuk mengenkripsi bagian konfigurasi dengan aspnet_regiis.exe alat baris perintah:

aspnet_regiis.exe -pef section physical_directory -prov provider

bagian adalah bagian konfigurasi untuk mengenkripsi (seperti connectionStrings ), physical_directory adalah jalur fisik lengkap ke direktori akar aplikasi web, dan penyedia adalah nama penyedia konfigurasi yang dilindungi untuk digunakan (seperti DataProtectionConfigurationProvider ). Atau, jika aplikasi web terdaftar di IIS, Anda dapat memasukkan jalur virtual alih-alih jalur fisik menggunakan sintaks berikut:

aspnet_regiis.exe -pe section -app virtual_directory -prov provider

Contoh berikut aspnet_regiis.exe mengenkripsi bagian <connectionStrings> menggunakan penyedia DPAPI dengan kunci tingkat komputer:

aspnet_regiis.exe -pef
"connectionStrings" "C:\Websites\ASPNET_Data_Tutorial_73_CS"
-prov "DataProtectionConfigurationProvider"

Demikian pula, aspnet_regiis.exe alat baris perintah dapat digunakan untuk mendekripsi bagian konfigurasi. Alih-alih menggunakan -pef sakelar, gunakan -pdf (atau alih-alih -pe, gunakan -pd). Selain itu, perhatikan bahwa nama penyedia tidak diperlukan saat mendekripsi.

aspnet_regiis.exe -pdf section physical_directory
  -- or --
aspnet_regiis.exe -pd section -app virtual_directory

Catatan

Karena kami menggunakan penyedia DPAPI, yang menggunakan kunci khusus untuk komputer, Anda harus menjalankan aspnet_regiis.exe dari komputer yang sama tempat halaman web dilayani. Misalnya, jika Anda menjalankan program baris perintah ini dari komputer pengembangan lokal Anda dan kemudian mengunggah file Web.config terenkripsi ke server produksi, server produksi tidak akan dapat mendekripsi informasi string koneksi karena dienkripsi menggunakan kunci khusus untuk komputer pengembangan Anda. Penyedia RSA tidak memiliki batasan ini karena dimungkinkan untuk mengekspor kunci RSA ke komputer lain.

Memahami Opsi Autentikasi Database

Sebelum aplikasi apa pun dapat mengeluarkan SELECT, INSERT, UPDATE, atau DELETE kueri ke database Microsoft SQL Server, database terlebih dahulu harus mengidentifikasi pemohon. Proses ini dikenal sebagai autentikasi dan SQL Server menyediakan dua metode autentikasi:

  • Autentikasi Windows - proses di mana aplikasi berjalan digunakan untuk berkomunikasi dengan database. Saat menjalankan aplikasi ASP.NET melalui Visual Studio 2005 s ASP.NET Development Server, aplikasi ASP.NET mengasumsikan identitas pengguna yang saat ini masuk. Untuk aplikasi ASP.NET di Microsoft Internet Information Server (IIS), aplikasi ASP.NET biasanya mengasumsikan identitas domainName``\MachineName atau domainName``\NETWORK SERVICE, meskipun ini dapat disesuaikan.
  • Autentikasi SQL - ID pengguna dan nilai kata sandi disediakan sebagai kredensial untuk autentikasi. Dengan autentikasi SQL, ID pengguna dan kata sandi disediakan di string koneksi.

Autentikasi Windows lebih disukai daripada autentikasi SQL karena lebih aman. Dengan autentikasi Windows, string koneksi bebas dari nama pengguna dan kata sandi dan jika server web dan server database berada di dua komputer yang berbeda, kredensial tidak dikirim melalui jaringan dalam teks biasa. Namun, dengan autentikasi SQL, kredensial autentikasi dikodekan secara permanen di string koneksi dan dikirimkan dari server web ke server database dalam teks biasa.

Tutorial ini telah menggunakan autentikasi Windows. Anda dapat mengetahui mode autentikasi apa yang digunakan dengan memeriksa string koneksi. String koneksi dalam Web.config untuk tutorial kami telah:

Data Source=.\SQLEXPRESS; AttachDbFilename=|DataDirectory|\NORTHWND.MDF; Integrated Security=True; User Instance=True

Integrated Security=True dan kurangnya nama pengguna dan kata sandi menunjukkan bahwa autentikasi Windows sedang digunakan. Dalam beberapa string koneksi istilah Koneksi Tepercaya=Ya atau Keamanan Terpadu=SSPI digunakan alih-alih Integrated Security=True, tetapi ketiganya menunjukkan penggunaan autentikasi Windows.

Contoh berikut menunjukkan string koneksi yang menggunakan autentikasi SQL. $CREDENTIAL_PLACEHOLDER$ adalah tempat penampung untuk pasangan kunci-nilai kata sandi. Perhatikan bahwa kredensial disematkan dalam string koneksi:

Server=serverName; Database=Northwind; uid=userID; $CREDENTIAL_PLACEHOLDER$

Bayangkan bahwa penyerang dapat melihat file aplikasi Web.config Anda. Jika Anda menggunakan autentikasi SQL untuk menyambungkan ke database yang dapat diakses melalui Internet, penyerang dapat menggunakan string koneksi ini untuk menyambungkan ke database Anda melalui SQL Management Studio atau dari halaman ASP.NET di situs web mereka sendiri. Untuk membantu mengurangi ancaman ini, enkripsi informasi string koneksi dalam Web.config menggunakan sistem konfigurasi yang dilindungi.

Catatan

Untuk informasi selengkapnya tentang berbagai jenis autentikasi yang tersedia di SQL Server, lihat Membangun Aplikasi ASP.NET Aman: Autentikasi, Otorisasi, dan Komunikasi Aman. Untuk contoh string koneksi lebih lanjut yang mengilustrasikan perbedaan antara sintaks autentikasi Windows dan SQL, lihat ConnectionStrings.com.

Ringkasan

Secara default, file dengan .config ekstensi dalam aplikasi ASP.NET tidak dapat diakses melalui browser. Jenis file ini tidak dikembalikan karena mungkin berisi informasi sensitif, seperti string koneksi database, nama pengguna dan kata sandi, dan sebagainya. Sistem konfigurasi yang dilindungi di .NET 2.0 membantu melindungi informasi sensitif lebih lanjut dengan memungkinkan bagian konfigurasi tertentu dienkripsi. Ada dua penyedia konfigurasi terlindungi bawaan: yang menggunakan algoritma RSA dan yang menggunakan Windows Data Protection API (DPAPI).

Dalam tutorial ini kita melihat cara mengenkripsi dan mendekripsi pengaturan konfigurasi menggunakan penyedia DPAPI. Ini dapat dicapai baik secara terprogram, seperti yang kita lihat di Langkah 2, serta melalui aspnet_regiis.exe alat baris perintah, yang tercakup dalam Langkah 3. Untuk informasi selengkapnya tentang menggunakan kunci tingkat pengguna atau menggunakan penyedia RSA, lihat sumber daya di bagian Baca Lebih Lanjut.

Selamat Pemrograman!

Bacaan lebih lanjut

Untuk informasi selengkapnya tentang topik yang dibahas dalam tutorial ini, lihat sumber daya berikut:

Tentang Penulis

Scott Mitchell, penulis tujuh buku ASP/ASP.NET dan pendiri 4GuysFromRolla.com, telah bekerja sama dengan teknologi Microsoft Web sejak 1998. Scott bekerja sebagai konsultan, pelatih, dan penulis independen. Buku terbarunya adalah Sams Teach Yourself ASP.NET 2.0 dalam 24 Jam. Dia dapat dijangkau di mitchell@4GuysFromRolla.com.

Terima kasih khusus untuk

Seri tutorial ini ditinjau oleh banyak peninjau yang bermanfaat. Peninjau utama untuk tutorial ini adalah Teresa Murphy dan Randy Schmidt. Tertarik untuk meninjau artikel MSDN saya yang akan datang? Jika demikian, hubungi saya di mitchell@4GuysFromRolla.com.