Ý nghĩa bảo mật của sp_executesql là gì?


9

Theo mặc định, trong SQL Server, [public]vai trò có EXECUTEquyền trên sp_executesql.

Tuy nhiên, tôi đã thừa hưởng một máy chủ cơ sở dữ liệu trong đó DBA trước đó đã thu hồi EXECUTEquyền sp_executesql.

Như một giải pháp tạm thời, tôi đã được cấp EXECUTEquyền sp_executesqltrên cơ sở khi cần thiết (thông qua vai trò trong cơ sở dữ liệu chính). Nhưng đây là bắt đầu là một nỗi đau duy trì.

Nếu tôi cấp EXECUTElại cho công chúng, có bất kỳ hậu quả nào tôi cần phải biết không?

Câu trả lời:


8

Không ai. sp_executesqlthực thi SQL, trong chính xác bối cảnh và đặc quyền giống như người gọi ban đầu sẽ thực thi cùng một SQL. Có rất nhiều, rất nhiều trường hợp khi SQL động là không thể tránh khỏi.


3
-1 bởi vì câu trả lời không chỉ ra rằng microsoft lưu ý rằng có thể có rủi ro bảo mật msdn.microsoft.com/en-us/l
Library / ms188001 (v = sql.105) .aspx

@ miracle173 - Công bằng mà nói, SQL động được viết xấu có phải là rủi ro bảo mật không sp_executesql. Giả sử một yêu cầu SQL động sau đó vô hiệu hóa sp_executesqlthực sự có thể làm tăng rủi ro vì ít nhất điều đó cho phép bạn tham số hóa các truy vấn (không giống như EXEC)
Martin Smith

2
Mặc dù nguy cơ tiêm sql không bao giờ có thể được đánh giá thấp, vô hiệu hóa sp_executesqlkhông phải là giảm thiểu thích hợp. Phần lớn các lỗi tiêm SQL xảy ra trong máy khách khi câu lệnh SQL được xây dựng 'bằng tay' bằng cách ghép các đoạn SQL với các biến đầu vào và sau đó thực thi 'như hiện tại'. Đối với tất cả những trường hợp sp_executesqlbị vô hiệu hóa không giúp được gì.
Remus Rusanu
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.