sql - ASp.NET MVC EF4 SQL 表或字段级别安全性

标签 sql security asp.net-mvc-2 entity-framework-4

我有一个稍微不寻常的安全要求,我正在寻找有关最佳实践或至少非脆弱方法的建议。

场景:内联网系统。有关多个相关实体的数据将被视为私有(private)数据。这被称为系统的未发布部分。只有某些用户可以访问此数据。在某个阶段,用户从这些数据中进行选择,标记一些记录并将它们发布到“发布”端。发布到已发布端的数据将从未发布端移除。然后,大部分系统用户就可以在发布端处理记录。

我知道这听起来像是父记录上的 bool 字段,标记为已发布或未发布,但让我解释一下我们要替换的系统如何解决该问题 - 这是我们需要模拟的安全级别。它是一个平面文件数据库 (Dataflex),未发布和已发布的数据位于单独的表、单独的服务器驱动器上、备份到单独的磁带、位于不同的房间、由不同的人进行物理访问。网络权限确保已发布的用户无法获取未发布的数据。该软件还管理权限,但如果出现问题,或者程序员犯了错误,他们仍然无法访问错误的数据。可能会获取这些数据的系统管理员都经过了积极的安全审查。

因此,我正在寻找有关如何使用 MVC、EF4、SQL 实现实现此目的的架构的建议。在一种极端情况下,我使用两个 sql 数据库构建两个系统,具有不同的权限:可能存在 web.config 中包含的差异,因此它实际上是相同的代码库。在天平的另一端,它是表中的标志,其中 Controller 方法标记为拒绝访问。 (这不好,因为如果一个程序员弄乱了一个搜索查询,它从错误的类别返回数据,并且它在不被注意的情况下离开了建筑物,它可能会导致人类牺牲,狗和猫生活在一起......质量歇斯底里)

抱歉,描述太长了。关于如何访问此寻求的最佳实践或其他建议。

最佳答案

不是 MVC/EF 特定的答案,但有一篇较旧的 Technet 论文(针对 SQL Server 2005)回答了很多问题并且可能有用:

“使用 SQL Server 2005 在分类数据库中实现行级和单元级安全性”

Available on Technet 。同一篇论文还可以downloaded as a Word document .

关于sql - ASp.NET MVC EF4 SQL 表或字段级别安全性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4896401/

相关文章:

mysql - 为什么SQL选择连接索引不一致?

java - 加密 Neo4j 关系

sql-server - 在 Multi-Tenancy 数据架构中,实现租户过滤 View 的最佳方式是什么?

sql - T-SQL 中的字符串格式化

sql - 在 Rails 中使用 Filterrific 搜索 Active Record 关联

php - 我应该启用 exec()、使用 php 安全模式还是更改 php.ini?

php - 在 PHP 中确保传统转义函数 SQL 注入(inject)安全?

asp.net - 如何对 UrlHelper 自定义帮助器方法进行单元测试

asp.net-mvc - 更改每个 Controller 的模型绑定(bind)器而不是按类型或属性?

mysql - 将一个大的 SQL 文件分解为许多文件,从 MySQL 的主文件中执行