我聽說SQL Server 2000中使用SP_OACreate,SP_OAMethod存在安全風險。SP_OACreate,SP_OAMethod等的使用是否存在安全風險?
我在程序集中使用強名稱並存儲在SQL Server計算機上的GAC中。
什麼是安全隱含/妥協?
我聽說SQL Server 2000中使用SP_OACreate,SP_OAMethod存在安全風險。SP_OACreate,SP_OAMethod等的使用是否存在安全風險?
我在程序集中使用強名稱並存儲在SQL Server計算機上的GAC中。
什麼是安全隱含/妥協?
這些擴展存儲過程允許從SQL Server內部實例化OLE(「ActiveX」)對象。一個典型的用例是創建一個MSXML對象並讓它將一些數據庫數據作爲HTTP POST發送。
在我看來,有兩個問題與等由sp_OACreate程序:
只有校長sysadmin角色可以在默認情況下執行這些。授予和測試這些權限是一種痛苦。 (您必須將用戶添加到主數據庫並授予他們在該數據庫中的權限。)
授予的權限非常寬泛。你不能只說「好的用戶,你有權創建這種對象,並與它做xyz」。相反,你說「好的用戶,你有權創建你想要的任何OLE對象並做你想做的任何事情。」這是一個相當廣泛的畫布。
不確定你的嘗試,但對於SQL 2000,你應該閱讀Using extended stored procedures or SP_OA stored procedures to load CLR in SQL Server is not supported。
風險是您必須授予SP_OACreate
對用戶的EXECUTE
權限。 這意味着如果他們隨後找到了執行任意SQL的方法,則可以創建服務器上任何可用庫的實例。 另一個問題是SP_OACreate
正在加載庫,所以如果炸彈爆炸,你的服務器也會加載。
我解析的SQL字符串存儲爲ntext在給定的表內,並返回結果作爲行集(客戶端期望在數據表中的結果)。 PS: 執行權限必須授予任何需要執行它們的用戶。 唯一的區別是我能看到的是我們必須明確地設置執行權限給SP_OACreate等。 – TonyP 2010-04-23 14:12:30