Bagikan melalui


Pertimbangan Keamanan Core SQLXML

Berlaku untuk: SQL ServerAzure SQL Database

Berikut ini adalah panduan keamanan untuk menggunakan SQLXML untuk akses data.

  • Penyedia SQLXMLOLEDB mengekspos properti StreamFlags yang memungkinkan Anda mengatur bendera yang menunjukkan fungsionalitas SQLXML apa yang harus diaktifkan atau dinonaktifkan untuk setiap instans tertentu. Anda dapat menggunakan properti ini untuk menyesuaikan penggunaan SQLXML dan memastikan bahwa hanya komponen yang Anda inginkan yang diaktifkan. Untuk informasi selengkapnya, lihat Penyedia SQLXMLOLEDB (SQLXML 4.0).

  • Ketika kesalahan SQLXML terjadi dan dikembalikan, mereka dapat menyertakan informasi tentang skema database seperti nama tabel, nama kolom, atau informasi jenis. Anda harus berhati-hati saat menangani kesalahan ini sehingga informasi tentang penginstalan SQL Server Anda tidak mudah ditemukan oleh pengguna yang tidak dimaksudkan atau diperlukan.

  • Ketika digunakan untuk mengkueri atau mengirim pembaruan ke SQL Server, SQLXML tidak menetapkan batas jumlah data yang dapat ditukar dan tidak melakukan pemeriksaan apa pun pada ukuran data dalam payload SQLXML sebelum mencoba memprosesnya. Saat Anda mengembangkan aplikasi menggunakan SQLXML, Anda bertanggung jawab untuk memastikan ada cukup memori pada sistem untuk memproses data. Misalnya, saat mengkueri data dari server, Anda harus memverifikasi ada cukup ruang dalam memori pada klien untuk menerimanya. Demikian juga, jika Anda memuat data ke server, Anda perlu memverifikasi ada cukup memori yang tersedia di server untuk memprosesnya dan cukup ruang penyimpanan disk yang tersedia di server untuk menyimpan data.

  • SQLXML secara dinamis menghasilkan kueri Transact-SQL dan perintah pembaruan dan mengirimkannya ke SQL Server untuk dieksekusi. Ini adalah satu-satunya cara di mana SQLXML meminta dan memperbarui server. Hasil akan diterima baik sebagai aliran (XML) atau sebagai set baris.

  • Saat menerima hasil kueri, SQLXML tidak mengambil tindakan berdasarkan konten data yang diterimanya. Tidak ada pemrosesan tambahan yang dilakukan berdasarkan jenis atau konten data. Data tidak pernah diperlakukan sebagai kode untuk menjalankan tindakan.

  • Saat menjalankan Templat XML, SQLXML menerjemahkan kueri XPath dan DBObject yang terkandung dalam templat yang dikirimkan ke dalam perintah Transact-SQL yang kemudian dijalankan terhadap SQL Server. Perintah ini hanya pernah memengaruhi data yang ada. Perintah yang dihasilkan oleh SQLXML tidak akan pernah mengubah struktur database. Pengguna harus mengeluarkan perintah eksplisit untuk mengubah struktur database. Misalnya, dengan menyertakannya dalam blok sql:query templat.

  • Saat menjalankan kueri DBObject dan pernyataan XPath melalui file pemetaan, SQLXML tidak akan mengubah data dalam database dengan cara apa pun.

  • SQLXML dapat membuat perubahan pemformatan pada data yang diberikan berdasarkan perbedaan antara model data XML dan SQL Server. Misalnya, format untuk menentukan waktu berbeda. SQLXML akan mencoba menyelesaikan perbedaan ini. Akibatnya, beberapa informasi presisi mungkin hilang.

  • SQLXML tidak menetapkan batasan jumlah waktu yang diperlukan untuk memproses data. Pemrosesan akan berlanjut hingga terjadi kesalahan atau pemrosesan selesai.

  • SQLXML tidak menulis ke sistem file. Jika pengguna ingin menyimpan data yang mereka ambil dari database, mereka harus melakukan ini dalam kode mereka.

  • SQLXML memungkinkan pengguna untuk menjalankan kueri SQL apa pun yang mereka suka terhadap database. Fungsionalitas ini tidak boleh diekspos ke sumber yang tidak aman atau tidak terkendali, karena ini pada dasarnya membuka database SQL tanpa provisi kepada pengguna mana pun.

  • Saat menjalankan Updategram, SQLXML menerjemahkan blok updg:sync ke dalam perintah DELETE, UPDATE, dan INSERT terhadap instans SQL Server. Perintah ini hanya pernah memengaruhi data yang ada. Perintah yang dihasilkan oleh SQLXML tidak akan pernah mengubah database. Pengguna harus mengeluarkan perintah eksplisit untuk mengubah struktur database. Misalnya, dengan menyertakannya dalam blok sql:query templat.

  • Saat menjalankan DiffGrams, SQLXML menerjemahkan DiffGram ke dalam perintah DELETE, UPDATE, dan INSERT terhadap instans SQL Server. Perintah ini hanya pernah memengaruhi data yang ada. Perintah yang dihasilkan oleh SQLXML tidak akan pernah mengubah database. Pengguna harus mengeluarkan perintah eksplisit untuk mengubah struktur database. Misalnya, dengan menyertakannya dalam blok sql:query templat.

Lihat Juga

Pertimbangan Keamanan SQLXML 4.0