sql >> Databáze >  >> RDS >> Sqlserver

Proč xp_cmdshell nefunguje v SQL Server 2012?

Počínaje verzí SQL Server 2005, kdy byla uvedena Nástroj pro konfiguraci oblasti povrchu , ve snaze učinit SQL Server ve výchozím nastavení bezpečnější. Tento nástroj byl od té doby vyřazen, ale stále můžete ovládat chování pomocí sp_configure . Příklad je uveden na webu 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

(Před mnoha lety jsem o tom také blogoval .)

Důvodem je, že se jedná o potenciální bezpečnostní díru. Pokud povolíte SQL Serveru spouštět xp_cmdshell , pak mohou teoreticky poslat jakékoli příkaz operačního systému, který obchází veškeré zabezpečení, o kterém jste si mysleli, že ho máte. To je obzvláště problematické, když byl účet služby SQL Server a/nebo účet proxy povýšen na sysadmin nebo jinou úroveň, protože je to jednodušší, než explicitně definovat pouze přesné věci, které by měli umět.

Spíše než ji povolit a zakázat pro podporu interakce s příkazovým řádkem, oblíbeným způsobem, jak odhalit funkčnost operačního systému a zároveň mít určitou kontrolu nad zabezpečením, je implementace funkcí na úrovni operačního systému, kterou potřebujete, pomocí SQL-CLR. Zde je dobrý výchozí bod pro přístup k souborový systém s CLR (když však budete hledat kolem sebe, najdete mnohem modernější a vyčerpávající přístupy).



  1. Jak vybrat více záznamů (řádek) ze sloupce v mysql?

  2. Přejmenujte databázi MySQL

  3. Jak nainstalovat PostgreSQL na macOS

  4. aktivace účtu php/mysql