sql >> Database teknologi >  >> RDS >> Sqlserver

Hvorfor virker xp_cmdshell ikke i SQL Server 2012?

Dette er blevet deaktiveret direkte fra boksen startende med SQL Server 2005, da de introducerede Surface Area Configuration Tool , i et forsøg på at gøre SQL Server mere sikker som standard. Dette værktøj er sidenhen blevet pensioneret, men du kan stadig kontrollere adfærden ved hjælp af sp_configure . Et eksempel er vist på 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

(Jeg bloggede også om dette for mange år siden .)

Årsagen er, at dette er et potentielt sikkerhedshul. Hvis du tillader SQL Server at udføre xp_cmdshell , så kan de teoretisk sende enhver operativsystemkommando der, og omgå enhver sikkerhed, du troede, du havde. Dette er især problematisk, når SQL Server-tjenestekontoen og/eller proxykontoen er blevet forhøjet til sysadmin eller andre niveauer, fordi det er nemmere end eksplicit kun at definere de nøjagtige ting, de skal kunne gøre.

I stedet for at aktivere og deaktivere den for at understøtte kommandolinjeinteraktion, er en populær måde at afsløre operativsystemfunktionalitet på, mens du stadig har en vis kontrol over sikkerheden, at implementere den funktionalitet på OS-niveau, du har brug for ved hjælp af SQL-CLR. Her er et godt udgangspunkt for at få adgang til filsystem med CLR (men hvis du søger rundt, vil du finde meget mere moderne og udtømmende tilgange).



  1. Mysql Vælg Næste &Forrige række ikke sorter efter id

  2. Hvad er placeringen af ​​mysql-klienten .my.cnf i XAMPP til Windows?

  3. Gendan MySQL-databasen ved kun at bruge .frm- og .ibd-filer

  4. Sletninger af PostgresSql 9.6 blev pludselig langsomme