1

我试图说服我的团队使用像实体框架这样的 ORM 层,而不是使用从存储过程创建数据表的老式方法。

他们认为存储过程更安全,因为您可以确保修改数据库的唯一方法是通过存储过程。我们拥有数据库,应用程序可以在内部或由第三方构建。

担心的是,如果我们使用实体框架,我们将不得不放松数据库的安全性,第三方可能会开始编写代码来直接修改数据库。

你能告诉我们是否可以控制数据库的安全性,使得数据库只能由 EF 修改,而不能直接修改。或者,如果我们可以控制 EF,使 EF 只能进行选择,而不能进行插入或删除。

对不起,如果我听起来有点模棱两可,但我在数据库安全方面不是很擅长。我们使用的是 SQL Server 2008。

谢谢

4

3 回答 3

2

数据库安全性仍然存在于数据库中。您仍然可以控制用户是否只能选择数据或执行任何其他操作。那是与EF无关的东西。

使用 EF,您甚至可以使用当前模型 - 您可以映射存储过程(仅允许使用 EDMX)以对每个实体进行更新、插入和删除操作,并且只允许选择数据并执行那些映射的存储过程。如果您需要更高级别的安全性,您甚至可以将数据库视图映射到 EF 并使用映射的存储过程进行插入、删除和更新,而无需直接访问数据库表。

顺便提一句。可以根据连接到数据库的用户/角色来控制数据库安全性,因此您的应用程序可以具有与第三方应用程序不同的权限。

于 2012-06-07T10:31:16.893 回答
1

不,您不能使不受信任的应用程序受信任。应用程序只是将 SQL 字符串发送到数据库,即使在使用 EF 时也是如此。SQL Server 对 EF 一无所知。它无法确保使用了 EF。

我会通过代码审查和数据库权限来解决这个问题。

于 2012-06-07T10:31:41.657 回答
0

找到一个有用的链接:

http://msdn.microsoft.com/en-us/magazine/ff898427.aspx

于 2012-06-07T14:14:58.587 回答