sp_executesqlのセキュリティ上の意味は何ですか?


9

デフォルトでは、SQL Serverでは、[public]ロールはEXECUTEに対する権限を持っていsp_executesqlます。

ただし、以前のDBAがのEXECUTE権限を取り消したデータベースサーバーを継承しましたsp_executesql

一時的な回避策として、私は必要に応じて(masterデータベースのロールを介して)にEXECUTE権利を付与していsp_executesqlます。しかし、これはメンテナンスの問題になり始めています。

私が許可した場合EXECUTE、公開に戻って、私が知っておく必要がある任意の影響がありますか。

回答:


8

無し。sp_executesql元の呼び出し元が同じ SQL を実行するのまったく同じコンテキストと権限でSQL を実行します。動的SQLが避けられない場合が数多くあります。


3
-1は、セキュリティ上のリスクがある可能性があることをマイクロソフトが指摘しているため、msdn.microsoft.com
en

@ miracle173-公平を期すために、セキュリティリスクではない動的SQLが不適切に記述されていsp_executesqlます。動的SQL要件を想定し、無効にsp_executesqlすると実際にはリスクが高まる可能性があります。これにより、クエリをパラメータ化できるようになります(とは異なりますEXEC
Martin Smith

2
SQLインジェクションのリスクを過小評価することsp_executesqlはできませんが、無効にすることは適切な緩和策ではありません。SQLステートメントの一部を入力変数と連結して「手動」でSQLステートメントを作成し、「そのまま」実行すると、SQLインジェクションエラーの圧倒的多数がクライアントで発生します。これらすべてのケースsp_executesqlで、無効にしても何も役に立ちません。
Remus Rusanu 2012
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.