Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

Mengapa xp_cmdshell tidak berfungsi di SQL Server 2012?

Ini telah dinonaktifkan sejak awal dengan SQL Server 2005, ketika mereka memperkenalkan Alat Konfigurasi Area Permukaan , dalam upaya membuat SQL Server lebih aman secara default. Alat tersebut telah dihentikan, tetapi Anda masih dapat mengontrol perilaku menggunakan sp_configure . Contoh ditampilkan di MSDN :

-- To allow advanced options to be changed.
EXEC sp_configure 'show advanced options', 1
GO
-- To update the currently configured value for advanced options.
RECONFIGURE
GO
-- To enable the feature.
EXEC sp_configure 'xp_cmdshell', 1
GO
-- To update the currently configured value for this feature.
RECONFIGURE
GO

(Saya juga membuat blog tentang ini bertahun-tahun yang lalu .)

Pasalnya, ini merupakan celah keamanan yang potensial. Jika Anda mengizinkan SQL Server untuk menjalankan xp_cmdshell , maka mereka secara teoritis dapat mengirim apa saja perintah sistem operasi di sana, melewati setiap dan semua keamanan yang Anda pikir Anda miliki. Ini terutama bermasalah ketika akun layanan SQL Server dan/atau akun proxy telah ditingkatkan ke sysadmin atau level lain karena itu lebih mudah daripada secara eksplisit mendefinisikan hanya hal-hal persis yang seharusnya dapat mereka lakukan.

Daripada mengaktifkan dan menonaktifkannya untuk mendukung interaksi baris perintah, cara populer untuk mengekspos fungsionalitas sistem operasi sambil tetap memiliki kontrol atas keamanan adalah dengan mengimplementasikan fungsionalitas tingkat OS yang Anda perlukan menggunakan SQL-CLR. Ini titik awal yang baik untuk mengakses sistem file dengan CLR (namun jika Anda mencari di sekitar Anda akan menemukan pendekatan yang jauh lebih modern dan lengkap).



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Perubahan Lisensi Common Sense untuk SQL Server 2014 Standard Edition

  2. Panduan Lengkap untuk Memperbaiki Kesalahan Database SQL 5243

  3. Tidak sama dengan <> !=operator pada NULL

  4. Mengonversi DateTime ke Format YYYY-MM-DD di SQL Server

  5. Cara mendapatkan Tanggal Sabtu (Atau Tanggal hari kerja lainnya) - SQL Server