sql-server - 存储过程比对数据库使用 LINQ 更安全吗?

标签 sql-server security entity-framework

我不是安全专家,我的项目中曾讨论过我们是否应该使用 Entity Framework 。尽管看起来我们会使用它,但项目负责人仍然坚持认为,出于安全考虑,我们仍然应该使用存储过程来执行所有操作(包括简单的 CRUD)。他说,如果我们使用存储过程,用户将只需要执行存储过程的权限,而不需要创建/读取/更新/删除的权限。

正如我之前所说,我不是安全专家,所以我很想知道这有多真实。

最佳答案

这样做的作用是向各个存储过程授予权利和特权,然后存储过程可以访问表,而不是表本身。

通过这种方式,您可以限制所有表的用户,并允许 SP 允许基于其他逻辑的语义访问(SP 级别的数据库权限,以及 SP 内的代码)。

这使整个安全框架在角色和权限方面具有更细的粒度。

例如,使用普通的数据库权限,很容易限制用户可以看到哪些表,但不能限制他们可以在表中看到哪些行。

解决此问题的两种方法是限制对基础表的访问,然后在该表上创建受限 View 并授予该 View 权限,或者您可以通过 SP 来限制访问,该 SP 具有能够限制用户行数的逻辑可以看到。

关于sql-server - 存储过程比对数据库使用 LINQ 更安全吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6142020/

相关文章:

sql-server - 如何重置SA密码?

sql - 在sql server中使用不同的过滤器选择数据

security - 为什么 WebSockets 被屏蔽了?

ruby-on-rails - 工作流程和安全? Ruby on Rails API,用于使用 facebook 登录的分离前端

c# - 使用从数据库自动创建的模型中的 Entity Framework

asp.net-mvc - 获取在 Identity 2 中分配角色的用户列表

sql - 如何选择值列

sql - 如何使用 SQL Server 2008 将两个表数据合并为一个表

database - 您为什么要在数据库中存储纯文本或加密(未散列)密码?

c# - Entity Framework 6 迁移与 MVC 6 RC 1