Quali sono le implicazioni di sicurezza di sp_executesql?


9

Per impostazione predefinita, in SQL Server il [public]ruolo ha EXECUTEdiritti su sp_executesql.

Tuttavia, ho ereditato un server di database in cui il precedente DBA ha revocato il EXECUTEdiritto sp_executesql.

Come soluzione temporanea, ho concesso i EXECUTEdiritti sp_executesqlsecondo necessità (attraverso un ruolo nel database principale). Ma questo sta iniziando a essere un dolore di mantenimento.

Se concedo EXECUTEal pubblico, ci sono delle ripercussioni di cui devo essere consapevole?

Risposte:


8

Nessuna. sp_executesqlesegue SQL, esattamente nello stesso contesto e privilegi del chiamante originale eseguirà lo stesso SQL. Ci sono molti, molti casi in cui SQL dinamico è inevitabile.


3
-1 perché la risposta non indica che le note di Microsoft che non ci può essere un rischio per la sicurezza msdn.microsoft.com/en-us/library/ms188001(v=sql.105).aspx
miracle173

@ miracle173 - Ad essere onesti, è SQL scritto male che non è il rischio per la sicurezza sp_executesql. Supponendo un requisito SQL dinamico, la disabilitazione sp_executesqlpotrebbe effettivamente aumentare il rischio poiché almeno ciò consente di parametrizzare le query (a differenza di EXEC)
Martin Smith,

2
Mentre il rischio di iniezione sql non può mai essere sottovalutato, la disabilitazione sp_executesqlnon è la mitigazione appropriata. La stragrande maggioranza degli errori di iniezione SQL si verificano nel client quando l'istruzione SQL viene compilata "a mano" concatenando pezzi di SQL con variabili di input e quindi esegue "così com'è". Per tutti quei casi la sp_executesqldisabilitazione non aiuta nulla.
Remus Rusanu,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.