首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >禁用SQLCLR上运行的代码类型

禁用SQLCLR上运行的代码类型
EN

Stack Overflow用户
提问于 2011-09-16 11:06:30
回答 1查看 114关注 0票数 2

最近,我设法使Razor解析器在.NET 3.5下工作,并由Server 2008托管。目前,这只是一个实验,看看什么是可行的。这是可行的,包括动态编译剃刀模板程序集,然后加载到AppDomain (那是个任务!)中。

因为SQLCLR不允许在任何SQLCLR托管代码中使用Assembly.Load(),即使在PERMISSION_SET = UNSAFE中也是如此。我的解决办法是在使用sp_executesql编译后直接注册程序集,我构建了CREATE ASSEMBLY语句。当我动态地呈现这些模板程序集时,我使用PERMISSION_SET = SAFE这样做,以确保它们不会在安全程序集允许的范围之外执行任何操作。

现在,棘手的部分是,这些剃须刀模板在连接用户的上下文中运行,因此它们可以访问数据库,例如,在我的模板中,我可以这样做:

代码语言:javascript
复制
@import System.Data.SqlClient
@{
    using (var conn = new SqlConnection("Context Connection = true"))
    {
        conn.Open();
        // Execute something against the database
    }
}

PERMISSION_SET = SAFE将允许这样做,因为这是SQLCLR存在的原因之一,但在这些模板程序集中,我想引入一些额外的安全性,以防止用户对数据库执行任何操作。

是否有人知道禁用类型(如SqlConnectionSqlCommand )的方法,比如使用代码访问安全性或其他方法?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-09-21 19:12:14

SqlClientPermission可以用来防止SqlConnection的使用。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7443765

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档