Sp_executesql'ın güvenlik üzerindeki etkileri nelerdir?


9

Varsayılan olarak, SQL Server'da [public]rolün EXECUTEhakları vardır sp_executesql.

Ancak, önceki DBA'nın EXECUTEhakkı iptal ettiği bir veritabanı sunucusunu devraldım sp_executesql.

Geçici bir çözüm olarak, gerektiğinde (ana veritabanındaki bir rol aracılığıyla) EXECUTEhaklar veriyorum sp_executesql. Ama bu bir bakım ağrısı olmaya başlıyor.

Eğer EXECUTEhalka geri dönersem, bilmem gereken herhangi bir sonuç var mı?

Yanıtlar:


8

Yok. sp_executesqlorijinal çağıranın aynı SQL'i çalıştıracağı bağlam ve ayrıcalıklar altında SQL yürütür . Dinamik SQL'in kaçınılmaz olduğu birçok durum vardır.


3
-1 çünkü yanıt, microsoft'un bir güvenlik riski olabileceğini belirttiğini göstermiyor msdn.microsoft.com/en-us/library/ms188001(v=sql.105).aspx
miracle173

@ miracle173 - Adil olmak gerekirse, güvenlik riski olmayan dinamik SQL yazılmıştır sp_executesql. Dinamik bir SQL gereksinimi varsayarsak, devre dışı bırakmak sp_executesqlaslında riski en azından sorguları parametreleştirmenize izin verdiği gibi artırabilir (aksine EXEC)
Martin Smith

2
Sql enjeksiyon riski asla göz ardı edilemezken, devre dışı bırakma sp_executesqluygun hafifletme değildir. SQL enjeksiyon hatalarının ezici çoğunluğu, SQL ifadesini giriş değişkenleriyle birleştirerek ve sonra 'olduğu gibi' yürüterek SQL ifadesi 'elle' oluşturulduğunda istemcide ortaya çıkar. Tüm bu durumlar sp_executesqliçin devre dışı bırakmak hiçbir işe yaramaz.
Remus Rusanu
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.