Apa implikasi keamanan sp_executesql?


9

Secara default, di SQL Server, [public]peran memiliki EXECUTEhak aktif sp_executesql.

Namun, saya telah mewarisi server database di mana DBA sebelumnya telah mencabut EXECUTEhaknya sp_executesql.

Sebagai solusi sementara, saya telah memberikan EXECUTEhak sp_executesqlatas dasar yang diperlukan (melalui peran dalam database master). Tapi ini mulai menjadi sakit pemeliharaan.

Jika saya memberikan EXECUTEkembali kepada publik, apakah ada dampak yang perlu saya ketahui?

Jawaban:


8

Tidak ada sp_executesqlmengeksekusi SQL, di bawah konteks dan hak istimewa yang sama persis dengan penelepon asli akan mengeksekusi SQL yang sama . Ada banyak, banyak, kasus ketika SQL dinamis tidak dapat dihindari.


3
-1 karena jawabannya tidak menunjukkan bahwa microsoft mencatat bahwa mungkin ada risiko keamanan msdn.microsoft.com/en-us/library/ms188001(v=sql.105).aspx
miracle173

@ miracle173 - Agar adil itu adalah SQL dinamis yang ditulis dengan buruk yang merupakan risiko keamanan tidak sp_executesql. Dengan asumsi persyaratan SQL dinamis maka penonaktifan sp_executesqlsebenarnya dapat meningkatkan risiko sebagai setidaknya yang memungkinkan Anda untuk parameterisasi pertanyaan (tidak seperti EXEC)
Martin Smith

2
Sementara risiko injeksi sql tidak pernah bisa diremehkan, penonaktifan sp_executesqlbukanlah mitigasi yang tepat. Mayoritas kesalahan injeksi SQL terjadi pada klien ketika pernyataan SQL dibuat 'dengan tangan' dengan menggabungkan potongan-potongan SQL dengan variabel input dan kemudian mengeksekusi 'apa adanya'. Untuk semua kasus sp_executesqlyang dinonaktifkan tidak membantu.
Remus Rusanu
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.