Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

Tại sao xp_cmdshell không hoạt động trong SQL Server 2012?

Điều này đã bị vô hiệu hóa bắt đầu từ SQL Server 2005, khi họ giới thiệu Công cụ cấu hình diện tích bề mặt , với nỗ lực làm cho SQL Server an toàn hơn theo mặc định. Công cụ đó đã ngừng hoạt động nhưng bạn vẫn có thể kiểm soát hành vi bằng cách sử dụng sp_configure . Một ví dụ được hiển thị trên 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

(Tôi cũng đã viết blog về điều này nhiều năm trước .)

Lý do là đây là một lỗ hổng bảo mật tiềm ẩn. Nếu bạn cho phép SQL Server thực thi xp_cmdshell thì về mặt lý thuyết, họ có thể gửi bất kỳ lệnh hệ điều hành ở đó, bỏ qua bất kỳ và tất cả bảo mật mà bạn nghĩ rằng bạn có. Điều này đặc biệt có vấn đề khi tài khoản dịch vụ SQL Server và / hoặc tài khoản proxy đã được nâng lên thành sysadmin hoặc các cấp độ khác vì điều đó dễ dàng hơn so với việc chỉ xác định rõ ràng những việc mà chúng có thể thực hiện.

Thay vì bật và tắt nó để hỗ trợ tương tác dòng lệnh, một cách phổ biến để hiển thị chức năng của hệ điều hành trong khi vẫn có một số quyền kiểm soát bảo mật là triển khai chức năng cấp hệ điều hành mà bạn cần bằng cách sử dụng SQL-CLR. Đây là điểm khởi đầu tốt để truy cập hệ thống tệp với CLR (tuy nhiên, nếu bạn tìm kiếm xung quanh, bạn sẽ tìm thấy các cách tiếp cận hiện đại và đầy đủ hơn nhiều).



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Hàm ROUND () của SQL Server:Điều gì cần làm và Tại sao bạn nên quan tâm?

  2. Bỏ tất cả các bảng có tên bắt đầu bằng một chuỗi nhất định

  3. Hướng dẫn phân vùng và phân vùng bảng SQL Server

  4. Làm cách nào để chèn dữ liệu vào bảng SQL Server bằng R?

  5. Triển khai phân trang bằng cách sử dụng OFFSET FETCH NEXT trong SQL Server