我试图说服我的团队使用像实体框架这样的ORM层,而不是使用从存储过程创建数据表的旧式方法。
他们认为存储过程更安全,因为您可以确保只有通过存储过程修改数据库的方法。我们拥有数据库,应用程序可以在内部或第三方构建。
担心的是,如果我们使用Entity框架,我们将不得不放松数据库安全性,第三方可能会开始编写代码来直接修改数据库。
您能告诉我们是否可以控制数据库的安全性,这样数据库只能由EF修改,而不能直接修改。或者,如果我们可以控制EF,那么EF只能选择,而不能插入或删除。
很抱歉,如果我听起来有些含糊不清,但我不擅长数据库安全方面。我们正在使用SQL Server 2008。
由于
答案 0 :(得分:2)
数据库安全性仍然存在于数据库中。您仍然可以控制用户是否只能选择数据或执行任何其他操作。这与EF无关。
使用EF,您甚至可以使用当前模型 - 您可以映射存储过程(仅允许使用EDMX)进行每个实体的更新,插入和删除操作,并且只允许选择数据并执行这些映射的存储过程。如果您需要更高级别的安全性,您甚至可以将数据库视图映射到EF,并使用映射的存储过程进行插入,删除和更新,而不允许直接访问数据库表。
顺便说一下。可以根据连接到数据库的用户/角色控制数据库安全性,这样您的应用程序可以拥有与第三方应用程序不同的权限。
答案 1 :(得分:1)
不,您不能信任不受信任的应用程序。应用程序只是将SQL字符串发送到数据库,即使使用EF也是如此。 SQL Server对EF一无所知。它无法确保使用EF。
我通过代码审查和数据库权限来解决这个问题。
答案 2 :(得分:0)